与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仓库,切记!