1.3 RPM软件包管理
1.3.1 软件包管理器简介
当前有数以百计的Linux发行版本,它们使用的软件包管理器基本上只有两种,分别是Red Hat Package Manager(RPM)与Debian的Dpkg。Dpkg包管理机制最早是由Debian Linux社群所开发的,透过Dpkg的机制,Debian提供的软件就能够简单地安装起来,同时还能提供安装后的软件相关元数据资讯,非常不错。只要是衍生Debian的其他Linux发行版大多使用Dpkg工具来管理软件,包括B2D、Ubuntu等。RPM包管理机制最早是由Red Hat公司开发的,很多Linux发行版都使用这个包管理工具来作为软件安装的管理方式。包括Fedora、CentOS、SuSE等。这些软件包管理器提供了组织各种实用的应用程序的标准的管理方法。CentOS使用RPM包管理工具。
1)软件包的平台名称
RPM适用在不同的操作平台上,不同的平台配置的参数是有所差异的,只有针对比较高阶的CPU来进行优化参数的配置,才能够使用高阶CPU所带来的硬件加速功能。所以就有所谓的i386、i686、x86_64与noarch等文件名称。
表1-3 RPM包管理的平台标记
目前x86平台上的新版CPU都能够运行旧版CPU所支持的软件,即硬件方面是向下兼容的,因此最低等级的i386软件可以安装在所有的x86硬件平台上面,不论是32位还是64位。但是反过来说就不行了。如旧主机Pentiun Ⅲ/Pentiun Ⅳ32位机器上面,就不能够安装x86_64的软件。
根据上面的说明,我们只要选择i386版本安装在x86硬件上面就肯定没问题。但是如果强调效能的话,建议还是选择搭配硬件的RPM文件,毕竟只有该软件针对CPU硬件平台进行过参数优化编译。
2)RPM的优点
RPM是通过将程序、数据预先编译并打包成为RPM文件格式后,再加以安装的一种方式,并且还能够进行数据库的记载。所以RPM有以下的优点:
①RPM内含已经编译过的程序与配置文档等数据,可以让使用者免除重新编译的困扰。
②RPM在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可避免文件被错误安装。
③RPM文件本身提供软件版本资讯、相容属性软件名称、软件用途说明、软件所含文件等资讯,便于了解软件。
④RPM管理的方式是使用数据库记录RPM文件的相关参数,以便于升级、移除、查询与验证。
1.3.2 RPM命令工具基本应用
1)软件包查询
#rpm -q setup //发现已安装的程序包的版本 #rpm-qi setup //能查询setup有关的汇总信息 #rpm-qf/etc/passwd //能标识拥有passwd配置文件的RPM程序包 #rpm -ql setup //列出setup RPM包中包含的文件,该信息能帮助用户理解 升级时哪些文件面临风险
2)本地软件包的安装
#rpm-ivhvsftpd //-i安装参数/-v查看详细安装信息/-显示安装 进度 #yum localinstallzip-3.0-1. el6. i686. rpm //解决安装出现的依赖问题 #rpm-ivhzip-3.0-1. el6. i686. rpm-test //测试当前安装的软件依赖问题
3)软件包卸载
#rpm-e vsftpd //卸载系统里已经安装的vsftpd软件包
1.3.3 yum管理工具的配置文件
yum,是Yellow dog Updater, Modified的简称,是杜克大学为了提高RPM软件包安装便利性而开发的一种软件包管理器。Yellow dog初期的发行版的开发者是Terra Soft, yum那时还叫作yup(Yellow Dog Updater),后经杜克大学的Linux@Duke开发团队改进,遂有此名。yum的宗旨是自动化地升级、安装、删除RPM包,收集RPM包的相关信息,检查依赖性并自动提示用户解决。yum的关键之处是要有可靠的repository,顾名思义,respository是软件的仓库,它可以是http或ftp站点,也可以是本地软件池,但必须包含RPM的header,而header包括了RPM包的各种信息,包括描述、功能、提供的文件、依赖性等。正是收集了这些header并加以分析,才能自动化地完成安装等相关任务。
yum的理念是使用一个中心仓库管理一部分甚至一个发行版本的应用程序的相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等操作,减少了Linux用户一直头痛的依赖性的问题。这一点上,yum和apt相同。
yum主要功能是更方便地添加、删除、更新RPM包,自动解决RPM包的依赖性问题,便于管理大量系统软件包的更新问题。yum可以同时配置多个资源库,有简洁的配置文件(/etc/yum.conf),可自动解决增加或删除RPM包遇到的依赖性问题,保持与RPM数据库的一致性。
yum的配置文件分为两部分:main和repository。main部分定义了全局配置选项,整个yum配置文件应该只有一个main,常位于/etc/yum.conf中。repository部分定义了每个源服务器的具体配置,可以有一到多个。常位于/etc/yum.repo.d目录下的各文件中。
1)/etc/yum.conf配置文件说明:
[main] cachedir=/var/cache/yum //yum下载的RPM包的缓存目录 keepcache=0 //缓存是否保存,1保存,0不保存 debuglevel=2 //调试级别(0~10),默认为2 logfile=/var/log/yum. log //yum的日志文件所在的位置 gpgcheck=1 //是否检查GPG(GNU Private Guard),一种密钥签名 plugins=1 //是否允许使用插件,默认是0不允许 installonly limit=3 //允许保留多少个内核包 retries=6 //网络连接发生错误后的重试次数,默认值为6 exactarch=1 //更新时允许更新不同架构的RPM包,如i386更新i686的RPM obsoletes=1 //允许不同版本之间的升级
2)/etc/yum.repos.d/中的文件
[root@~]#cd/etc/yum. repos. d/ [root@.. ]#ls CentOS-Base. repo CentOS-Debuginfo. repo CentOS-Sources. repo CentOS-Vault. repo
若需要修改基于网络的yum源,需要修改CentOS-Base.repo文件,主要是修改“baseurl”参数,指定需要的网络镜像软件资源。再在终端执行yum clean all和yum makecache两行命令,重新创建本地软件包目录缓存。
3)yum工具安装
CentOS默认安装了yum工具,若需要自行安装,yum的基础安装包包括:
yum //RPM格式包的安装与更新 yum-fastestmirror //yum插件选择最快的镜像软件仓库t yum-metadata-parser //yum的元数据分析
以上3个基础工具,其他安装包根据自己需要安装。
1.3.4 yum源的配置实践
1)以CentOS7配置163镜像源为例,具体实践如何配置
[root@~]# vim /etc/yum. repos. d/CentOS-Base. repo //编辑CentOS-Base. repo [base] name=CentOS-$releasever-Base-163.com baseurl=http://mirrors.163.com/centos/7.0.1406/updates/x86_64/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 [updates] name=CentOS-$releasever-Updates-163.com baseurl=http://mirrors.163.com/centos/7.0.1406/updates/x86_64/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 ......
这里具体列出了[base]和[updates]节的参数,主要是修改“baseurl”参数,其他节如[addons]和[extras]等类似修改未做介绍。具体内容请参考CentOS-Base.repo配置文件。编辑好该文件后注意保存结果,然后执行以下命令:
[root@~]#yum clean all [root@~]#yummakecache [root@~]# yum repolist //测试配置的源,若能显示出用户添加的163源,就可以了
2)添加第三方yum源
CentOS由于很追求稳定性,所以官方源中自带的软件不多,因而需要一些第三方源,比如EPEL、ATrpms、ELRepo、NuxDextop、RepoForge等。为了尽可能保证系统的稳定性,这里大型第三方源只添加EPEL源和ELRepo源。
EPEL即Extra Packages for Enterprise Linux,为CentOS提供了额外的10000多个软件包,而且在不替换系统组件方面下了很多功夫,因而可以放心使用。执行以下命令完成EPEL源的安装:
[root@~]#yum install epel-release
执行完该命令后,在/etc/yum.repos.d目录下会多一个epel.repo文件。
ELRepo包含了一些硬件相关的驱动程序,比如显卡、声卡驱动。执行以下命令完成ELRepo源的安装:
#rpm-import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org #rpm-Uvh http://www.elrepo.org/elrepo-release-7.0-2. el7. elrepo. noarch. rpm
完成该命令后,在/etc/yum.repos.d目录下会多一个elrepo.repo文件。
yum-axelget是EPEL提供的一个yum插件。使用该插件后用yum安装软件时可以并行下载,大大提高了软件的下载速度,减少了下载的等待时间,执行以下命令完成yum-axelget的安装:
#yum install yum-axelget
安装该插件的同时会安装另一个软件axel。axel是一个并行下载工具,在下载http、ftp等简单协议的文件时非常好用。
第一次全面更新,先把系统已经安装的软件包都升级到最新版:
#yum update
要更新的软件包有些多,可能需要一段时间。不过有了yum-axelget插件,速度已经快了很多。
3)yum命令的基本运用
[root@~]#yum search vsftpd //查询vsftpd包是否安装 [root@~]#yum install vsftpd //安装vsftpd软件包 [root@~]#yum remove vsftpd //卸载vsftpd软件包,也可以使用force参数