软件包管理工具的使用及yum源仓库的配置

我们知道CentOS,本质上是RedHat的社区版,其无论是功能还是软件配置上都与RedHat保持一致,因此CentOs系列的软件包管理主要的也是rpm和yum工具。

RPM包管理

rpm包管理工具可以说是历史悠久、名声斐然了。rpm起初是RedHat公司研发的软件包管理工具,即RedHat Package Managemer。但由于其性能突出,在开源界得到了各大Linux发行厂商的认同,被推崇为公认的行业标准,因此rpm也改为递归称呼RPM Package Manager。

虽然现在的标准CentOS系统都有yum可以使用,rpm工具似乎已经无用武之地,但作为yum利器的基础软件,在某些情况下还是很需要掌握的。尤其是当我们安装一个单独的外来rpm软件包的时候,直接使用rpm进行安装明显要好很多。

安装

    rpm {-i|–install} [install-options] PACKAGE_FILE…  

        #尤其需要注意的是这里使用的是rpm包文件的全名

        -v:  显示安装过程信息

        -h:  以# 显示程序包管理执行进度

        –test:  测试安装,但不真正执行安装;dry run 模式

        –nodeps :忽略依赖关系

        –replacepkgs | replacefiles :替换原来的安装包或文件

        –nosignature:  不检查来源合法性

        –nodigest :不检查包完整性

        –noscripts :不执行程序包脚本

升级/更新

    rpm {-U|–upgrade} [install-options]  PACKAGE_FILE …

    rpm {-F|–freshen} [install-options]   PACKAGE_FILE …

        upgrade :安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”

        freshen :安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作

    –oldpackage :降级

    –force : 强制安装

注意:在Linux下同一软件的不同版本可以共存,这在某些情况下是非常方便的,尤其是当需要在某个软件的两个版本之间进行频繁切换的时候。另外!!!生产环境中,针对系统内核一定要谨慎升级,可以重新安装,让两个版本的内核并存,避免新内核不稳定造成严重影响。

查询

    rpm {-q|–query} [select-options] [query-options] [select-options]

        -a:  所有已经安装的软件包

        -f:  查看系统上指定的文件由哪个程序包安装生成

        -p:对尚未安装的程序包文件进行查询,需要加上-p选项

        –whatprovides CAPABILITY :查询指定的CAPABILITY由哪个包所提供

        –whatrequires CAPABILITY :查询指定的 CAPABILITY 被哪个包所依赖

        –changelog :查询rpm 包的changelog

        -c:  查询程序的配置文件

        -d:  查询程序的文档

        -i: information

        -l:  查看指定的程序包安装后生成的 所有文件

        –scripts :程序包自带 的脚本

        -R|–requires:  查询指定的程序包所依赖的 CAPABILITY

        –provides:  列出指定程序包所提供的 CAPABILITY

卸载

    rpm {-e|–erase}[–allmatches][–nodeps][–noscripts][–notriggers][–test] PACKAGE_NAME…

校验

    rpm {-V|–verify} [select-options] [verify-options]  对安装后的软件进行校验

    校验结果各字符的含义:

        S  文件大小发生改变

        M  Mode 改变(包括权限和文件类型)

        5  MD5校验发生改变

        D  设备号不匹配

        L  readLink(2) 路径不匹配

        U  User 信息发生改变

        G  Group 信息发生改变

        T  mTime 改变

        P  capabilities 发生改变

    rpm -K|checksig rpmfile 软件包文件的校验,需要提前导入密钥文件

    rpm –import / etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

YUM管理工具

使用过yum的人,信息都不想再继续用rpm来进行软件的安装,最主要的原因就是yum很好的解决了软件安装过程中的包依赖关系,让软件的安装不再那么“痛苦”,尤其是当我们在安装过程中被各种依赖搞得焦头烂额却仍然无法搞定的时候,一条yum命令却可以轻松解决。这么神奇的工具是如何实现的呢?

YUM: Yellowdog Update Modifier,是Yellowdog公司开发出来的rpm前端程序,能够很好的解决软件包安装过程中的相互依赖关系。Yum是构建在rpm基础之上的,所以没有rpm,yum也是无法使用的。要想更好的使用yum,需要进行提前配置的(系统默认已经进行配置,我们也可以根据自己需要进行修改),yum的配置主要分为客户端和服务端(在后面部分会讲解相关配置)。

安装程序包:

    yum install package1 [package2] […]  注意:这里用的是软件包名,不是软件包的文件名

    yum reinstall package1 [package2] […]  重新安装

        –nogpgcheck :禁止进行gpg check

        -y:  自动回答为“yes”

        -q :静默模式

        –noplugins :禁用所有插件

升级程序包:

    yum update [package1] [package2] […]

    yum downgrade package1 [package2] […]   降级

检查可用升级:

    yum check-update

卸载程序包:

    yum remove | erase package1 [package2] […]

安装及升级本地程序包:

    yum localinstall rpmfile1 [rpmfile2] […]   ( 用install 替代)

    yum localupdate rpmfile1 [rpmfile2] […]  ( 用update 替代)

包组管理的相关命令:

    yum groupinstall group1 [group2] […]

    yum groupupdate group1 [group2] […]

    yum grouplist [hidden] [groupwildcard] […]

    yum groupremove group1 [group2] […]

    yum groupinfo group1 […]

查看程序包information: :

    yum info […]  查看指定的特性(可以是某文件)由哪个程序包所提供:

    yum provides | whatprovides feature1 [feature2][…]

搜索:

    yum search string1 [string2] […] 以指定的关键字搜索程序包名及summary 信息

查看指定包所依赖的capabilities: :

    yum deplist package1 [package2] […]

查看yum 事务历史:

    yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

    yum history

    yum history info 6

    yum history undo 6

显示仓库列表:

    yum repolist [all|enabled|disabled]

显示程序包:

    yum list

    yum list [all | glob_exp1] [glob_exp2] […]

    yum list {available|installed|updates} [glob_exp1][…]

清理本地缓存:

    yum clean [ packages | metadata | expire-cache |rpmdb | plugins | all ]

构建缓存:

    yum makecache

YUM仓库的配置

yum仓库主要分为两部分,一部分是rpm软件包,一部分是yum配置文件repodata。可以将两者放在一个目录,当然为了便于管理,我们还是建议两者分开。

第一步,创建目录结构。那么首先我们创建一个yum仓库的目录centos,如果你同时为多个版本(如centos6和7)提供yum源,那么可以在centos目录下分别创建目录(目录6和7),然后分别创建yum仓库;如果只是为单一版本提供yum源,可以直接在centos目录创建yum仓库,我们这里以centos7为例。进入到要创建yum仓库的目录,创建一个软件包的存放目录Packages(名称可以自己定义)。

第二步,获取rpm软件包。rpm软件包,可以从光盘、官方网站、第三方获取,或自己制作rpm软件包,把我们获取到的rpm软件包移到Packages目录下。

第三步,创建配置文件。当以上步骤准备就绪以后,我们就可以使用createrepo命令来创建yum仓库的配置文件repodata了。命令格式如下:

createrepo  [/PATH/TO/REPODATA]  [/PATH/TO/RPM_PACKAGES/]

createrepo centos/7 centos/7/Packages

至此,我们的yum仓库服务端已经配置好了,最终的目录结构如下图。是不是感觉很简单呢?当然,如果你想通过网络为更多的人提供yum源服务,那就需要配置ftp或http web服务了,只需要将我们配置好的yum仓库放置在我们提供服务的相应目录里即可。

Image 1.jpg

YUM客户端的配置

yum客户端的配置文件在/etc/yum.repos.d/目录中,默认系统已经提供了大部分的官方网络yum源配置,当然大家也可以使用我们自己配置的yum源。这里需要我们创建一个以.repo结尾的配置文件,并编辑文件的内容,格式如下:

[CentOS7]

name=CentOS7 base repo

baseurl=file:///misc/cd/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS7

enabled=1

[CentOS7]  这个是yum仓库的ID,名称可以自己定义,但在系统中需要是唯一的,不能重复

name=  这个是yum仓库的描述信息,可以没有

baseurl=  这个是yum源repodata父目录的位置,有本地file://或网络ftp://或http://三种形式

gpgcheck=  这个说明对于安装的软件是否要进行校验,1为校验,0为不校验

gpgkey=  指定gpgcheck校验码的位置;如果gpgcheck为1,则该项必须填写,并且正确

enabled=  该项指明该仓库是否可用,1为可用,0为不可用

该例中,我们的yum仓库位于本机/misc/cd目录下,该目录下有rpm软件包目录Packages和配置文件目录repodata两个子目录,因此使用baseurl=file:///misc/cd指明路径。

当配置好本地客户端以后,使用yum clean all命令清理一下yum缓存,这样我们就可以愉快的使用yum了。

原创文章,作者:M21-张国辉,如若转载,请注明出处:http://www.178linux.com/57835