Linux的程序包管理器(中)——yum命令从未如此详细过

    与rpm包管理器相比,yum包管理器恐怕更受用户的青睐,其很大的原因在于这款包管理器能自动解决rpm包之间的相互依赖关系。本文就CentOS 6.6为例,尽可能详细的给读者朋友们讲解yum包管理器的用法。

    yum(Yellowdog Updater Modified的缩写)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,用户无须繁琐地一次次下载、安装。---引自“百度百科”。因此我们就可以判断出它实际上是一个C/S工具,有客户端和服务器端。通常把服务器端叫做“yum仓库”。这个叫法非常贴切,每当我们用yum安装一个程序的时候,它就如同一个机器人,自动的从yum仓库中找到相应的包,搬到我们的系统上自动为我们安装。

    yum的配置文件是/etc/yum.conf,其中定义了yum仓库的位置等信息

从图中我们可以看出在/etc/yum.repos.d/目录下存有不止一个的yum仓库,实际上系统自带的yum仓库就存放在该目录下,其命名以.repo结尾,后文我们将为大家讲解yum仓库的相关内容

    yum命令的使用:

    安装:yum install PACKAGE_NAME ...  可以同时安装多个程序,yum从yum仓库中找到该程序后,会询问用户是否安装。

例如:使用yum安装mysql程序:yum install mysql

如果想实现完全自动化安装,只需要在程序包名后面加上 -y,替用户自动回答为yes。则上述安装命令还可以写为:yum install mysql -y

如果要安装指定的程序包版本的程序:yum install PACKAGE_NAME-VERSION

注:使用yum命令也可以安装本地的程序包:yum localinstall /path/to/rpm_package_file ...,在CentOS 7上可以直接使用yum install /path/to/rpm_package_file ...安装本地程序包

    重装:yum reinstall PACKAGE_NAME ...

例如:使用yum重装nginx:yum reinstall nginx -y

    升级:yum update PACKAGE_NAME;检查当前系统上可升级的程序:yum check-update;如果有多个版本的升级包可用,且仅期望升级到指定版本:yum update PACKAGE-VERSION

例如升级nginx,从1.4.7-1升级到1.6.2-1版本:yum update nginx -y

    降级:yum downgrade PACKAGE_NAME。注:将当前版本降级到它的前一级,如果想降级到指定版本,需指明包版本号

例如,将现版本的nginx降级到1.4.7-1版本:yum downgrade nginx-1.4.7-1.el6.ngx  -y

   卸载包:yum erase PACKAGE_NAME 或 yum remove PACKAGE_NAME。注:被依赖的包会被一并卸载。

   查询类命令:

        查询某程序是否安装:yum list PACKAGE_NAME,不加包名,将列出系统上安装的所有包

      查看某包的摘要信息:yum info PACKAGE_NAME


   

        根据关键字模糊查询包名或包的摘要信息包含此KEYWORD的相关列表:yum search KEYWORD

        查询某文件是由哪个包安装生成:yum provides /path/to/somefile 或 yum whatprovides /path/to/somefile

    附:包组管理。通常在开发程序包时,需要使用,如:Development Tools、Server Platform Development、Desktop Platform Development、Debug Tools等包组


    显示所有包组:yum grouplist

    显示某包组的相关信息:yum groupinfo "GROUP_NAME"

    安装包组:yum groupinstall "GROUP_NAME"或 yum install @"GROUP_NAME"

    卸载包组:yum groupremove "GROUP_NAME"或 yum remove @"GROUP_NAME"

    升级包组:yum groupupdate "GROUP_NAME"或 yum update @"GROUP_NAME"

    下面为读者朋友们讲解一下yum仓库的有关内容。

    在/etc/yum.repo.d/目录中,以.repo命名的都是yum仓库。yum仓库存放了众多rpm包以及和rpm包元数据相关的服务器路径,yum命令的安装,升级都是依赖于yum仓库。

    yum仓库类命令:   

        列出当前系统上所有可用的仓库: yum repolist

                 

        禁用某个yum仓库   yum --disablerepo=REPO_ID repolist,如禁用nginx仓库: yum --disablerepo=nginx repolist

        启用某个yum仓库yum --enablerepo=REPO_ID repolist,如启用nginx仓库: yum --enablerepo=nginx repolist

    注:命令行启用或禁用yum仓库的优先级要高于配置文件/etc/yum.repos.d/*.repo中enable定义的属性。

        清理yum仓库缓存:yum clean all;通常在切换yum仓库的时候,需要先清理缓存

    我们可以使用系统自带的yum仓库,但在公司里有些时候网络环境不太给力,那么我们也可以自己配置yum仓库,Linux允许用户在一个repo文件中定义多个仓库,也可以将多个仓库一一命名为repo文件。

    yum仓库定义的格式:

        [REPO_ID]定义了仓库在此系统上的唯一标识,如[base]

        name=REPO的描述信息

        baseurl=yum客户端访问仓库的路径,注:要顶格写,如:baseurl=ftp://172.16.0.1/pub/CentOS6/;常用的文件协议有:ftp://、http://、nfs、file:///(最后一个/表示根文件系统路径)。

        enabled={1|0}是否启用此yum仓库

        gpgcheck={1|0}是否检查包的来源合法性和包的完整性

        gpgkey=指定公钥key的存放路径,如:ftp://172.16.0.1/pub/CentOS6/gpg-key

        cost=开销值,默认为1000,值越小yum客户端越优先选择,当有多个yum仓库时可指定某个yum仓库被率先访问


    附:yum客户端配置的高级用法

    ①在yum客户定义仓库时可使用cost定义仓库的使用开销,默认为1000;

    ②baseurl中指定路径时可使用变量:$releasever: 当前OS发行版的主版本号

                                     $arch: 平台

                                     $basearch: 基础平台,例如i686,i586,i486,i386系列的基础平台都是i386,如:http://mirrors.sohu.com/centos/$releasever/os/$basearch

    ③可以使用mirrorlist指令替换baseurl:指向一个URL,此URL是一个文本文件,其中保存了大量镜像服务器列表;用户使用yum仓库时,会获取此列表文件,而后通过fastestmirror插件判断哪一个镜像为访问速度最快的服务器,并以之做为本次访问的baseurl;


    在定义yum仓库的时候,其实只需要定义[REPO_ID]、baseurl、enabled就满足了一个yum仓库使用的基本条件了。定义完之后,不要以为就可以用了,还需要用createrepo程序将其组建起来。

    构建yum仓库命令:createrepo <DIR >。注:需先yum安装该程序。

    

实战:将CentOS6.6DVD2中的rpm包放到FTP服务器上,创建成yum仓库。供公司内部使用。

为了给大家演示,使用两台虚拟机,一台作为ftp服务器(IP:172.16.24.1),一台作为客户端(IP:172.16.24.24)

将dvd光盘映像添加进虚拟机,开机启动系统。

启动ftp服务: service vsftpd start

创建dvd的挂载点:mkdir /media/cdrom;

以只读方式挂载光盘:mount /dev/cdrom /media/cdrom;

在/var/ftp/pub/中,创建一个目录pub存放这些rpm包,并将dvd目录下Packages目录下的所有包复制到/var/ftp/pub/pub目录中:cp /media/cdrom/Packages/* /var/ftp/pub/pub(注:这个目录是ftp服务器的共享目录,放在其他目录下的用朋友请检查客户机是否有权访问到这个目录)

安装构建yum仓库程序:yum install createrepo -y 或者将crearepo的rpm包下载至FTP服务器上,使用rpm -i createrepo-主版本号-次版本号-发行号-其他.rpm安装   

构建仓库:createrepo /var/ftp/pub/pub/

在客户机上编辑配置文件指向该仓库:vi /etc/yum.repos.d/ftp.repo

[ftp_pub]

baseurl=ftp://172.16.24.1/pub/pub

enabled=1

gpgcheck=0

cost=200

保存退出;

清理yum缓存:yum clean all;并查看结果:

结果测试:安装axel:yum install axel

注:新上传到ftp上rpm包,要重建yum仓库,切记!


本文出自 “小志” 博客,请务必保留此出处http://948555452.blog.51cto.com/9146446/1584723

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