linux程序包管理

本文主要介绍linux软件包的rpm、yum与源码包的安装、卸载、配置命令及参数。

一、RPM包管理机制

    RPM为RPM Package Manager的递归缩写,是常用于Redhat、CentOS和S.uS.E等系统的软件包管理机制。为了方便用户安装配置,一些第三方机构或者程序源代码的开发人员会将源代码程序的相关功能制作成RPM包格式。一个源码程序普遍来说会开发出一个主包和若干个子包,且相互间可能会有依赖关系。

    1、RPM包的命名格式

    普遍为:包名-源代码发行号-rpm包发行号.适用硬件平台.rpm

    例如:httpd-2.2.15-39.el6.centos.x86_64.rpm

        包名:httpd

        源代码发行号:2.2.15

        rpm包发行号:39

        适用硬件平台:el6.centos.x86_64

    2、获取RPM包的途径

    安装光盘:系统安装光盘会携带大量的rpm安装程序包

    站点服务器:http://mirrors.163.com

          http://mirrors.sohu.com

          http://mirrors.opencas.cn

    项目官网:程序的官网可能会提供源代码与rpm包两种格式

    第三方:某些第三方机构或个人会发布许多rpm包

          http://rpmfind.net

          http://rpm.pbone.net

    3、RPM包的合法性

    为了保证rpm包来源的合法性与完整性,包制作者制作完成后会附加数字签名于包上,普遍采用私钥加密,公钥解密的安全机制  

    4、RPM包安装命令

    -i:安装程序包,需跟完整的包格式文件名

    -h:显示安装进度

    -v:显示详细信息

    -vv:显示更多详细信息

    -vvv:显示非常详细的信息

    --test:测试安装,但不会真正安装

    --nodeps:忽略依赖关系

    --replacepkgs:重新安装,且并不一定会替换原安装配置文件

    组合选项,例:rpm -ivh httpd-2.2.15-39.el6.centos.x86_64.rpm

    5、RPM包卸载及升级

    -e:卸载,仅需跟包名。例,rpm -e httpd

    --nodeps:忽略依赖关系,且卸载后,某些依赖于此包的程序可能会运行不正常

    -U:升级或安装,包未安装则安装,已安装则升级包版本

    -F:升级安装包,若包未装则不安装

    --force:强制升级,忽略升级后会导致的版本冲突问题

    6、RPM包查询操作

    -q:跟安装包名,查询此包是否安装。例,rpm -q httpd

    -qa:查询所有已安装包

    -qi:查询包的详细信息

    -ql:查看安装包生成了哪些文件

    -qc:查看安装包生成了哪些配置文件

    -qd:查看安装包生成了哪些帮助文件

    -q --scripts:查询安装包的相关脚本

    -V:检查安装包生成的文件属性是否发生变化

    -qf:跟文件路径,查询该文件由哪个包安装生成

       例:rpm -qf /etc/httpd/conf/httpd.conf

    -qpi:跟完整路径下的完整包名,查询此包详细信息

       例:rpm -qpi /dev/cdrom/Packages/httpd-2.2.15-39.el6.centos.x86_64.rpm

    -qpl:跟完整路径下的完整包名,查询此包安装后将要生成哪些文件

    -qpc:跟完整路径下的完整包名,查询此包安装后将要生成哪些配置文件

    -qpd:跟完整路径下的完整包名,查询此包安装后将要生成哪些帮助文件

    7、RPM包数据库

    在CentOS6中,rpm包安装后信息会保存到/var/lib/rpm数据库目录中

    rpm --initdb:初始化数据库。如果没有库,则新建库;如果有,则不新建

    rpm --rebuilddb:重建数据库,并覆盖原有的数据库

二、yum软件包管理器

    yum全称Yellow dog Updater,Modified,用于RedHat及CentOS系统。依赖于软件仓库,基于RPM包管理机制,能够解决RPM包安装过程中繁杂的依赖关系,并一次安装所有依赖的软件包。

    1、yum安装流程

    执行安装操作后,首先yum会分析缓存于本地的元数据仓库(/var/cache/yum/),结合本地系统环境已经安装的包,去联系yum仓库,下载需要安装的程序包于本地,下载完成后一并安装。

     2、常见yum仓库

    base库:通常为系统发行版所提供的程序包库

    updates库:系统发行版所提供的程序包的升级库

    extra库:系统发行版所提供的额外程序包库

    epel库:通常与fedora的yum仓库项目一致,是一个高质量的附加软件包项目

    每一个yum仓库必须有repodata目录及相关rpm软件包

    3、yum客户端配置文件

    主配置文件:默认为/etc/yum.conf文件

    仓库配置文件:位于/etc/yum.repos.d/目录中,以.repo结尾的文件      

[base]
#yum仓库的serverid,用于区别其它的yum仓库,必须独一无二
name=CentOS-$releasever - Base
#yum仓库名,用于描述该仓库
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
        ftp://192.168.1.20/centos/6/os/x86_64
        nfs://192.168.1.21/centos/6/os/x86_64
        file:///media/cdrom           
#yum仓库地址,支持http、ftp、nfs和本地等仓库地址
enabled=1
#启用yum仓库,0为不启用 
gpgcheck=1
#启用gpg校验,以确定rpm包的来源是有效和安全的,0为不启用
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#gpg校验地址

    4、yum命令

    yum repolist {enabled|disabled|all}:列出所有{启用|未用|所有}repo,默认为列出启用

    yum list {all|installed|available}:列出{所有|已安装|可安装}软件包,默认为列出所有

    yum info 包名:查看包的描述信息

    yum grouplist:列出所有包组

    yum groupinfo 包组名:显示包组信息及其包含的程序包列表

    yum clean all:清除yum缓存

    yum install 包名:安装包

       -y install 包名:无需提示,直接安装软件包

    yum reinstall 包名:重新安装软件包

    yum check-update 包名:检查软件包是否有可升级包

    yum update 包名:升级软件包

    yum remove|erase 包名:卸载软件包

    yum groupinstall 包组名:安装软件包包组

    yum groupremove 包组名:卸载包组

    5、创建yum仓库

    创建yum仓库依赖于createrepo软件包,安装完createrepo后,直接对软件包目录执行createrepo命令,会生成repodata目的,即创建yum仓库成功

    例:createrepo /var/www/pub/

三、源码包安装方式

    无论是rpm命令或yum命令安装的rpm包,其都限制于制作rpm包作者的思想,导致功能选择不如源码包灵活,甚至在rpm包中缺少我们所需的某种功能,且rpm包因为制作难度较高,其更新速度要远远慢于源码包的更新。而源码编译安装,可以在编译过程中自己定义我们所需的功能,更加适合自己的系统,也更加稳定高效。

    1、编译安装依赖开发包

    源码安装需要对程序进行编译,所以依赖于系统的开发环境gcc、gcc-c++等包,这些包普遍存在于“Development tools”和“Server Platform Development”软件包组中

    2、源码包获取方式

    所需程序的官网一般都会提供程序的源码包,或者在一些代码托管机构,例如SourceForge、github.com和code.google.com等下载

    3、源程序编译安装步骤

    解压:下载的源码包一般为tar包的压缩文件,解压后进入安装包目录

    配置:./configure

       ./configure --help获取帮助信息,可获取到配置所需要的选项参数

       较通用的参数例如--prefix=安装路径,可以指定软件安装路径

    编译:make

    安装:make install

    4、实例安装nginx

    详见本人另一篇博客:http://princepar.blog.51cto.com/1448665/1636026

   






                                  

本文出自 “晓洋” 博客,请务必保留此出处http://princepar.blog.51cto.com/1448665/1658511

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。