yum是Red Hat所特有的安装RPM程序包的工具。使用RPM工具安装某一个程序包时,有可能会因为该程序包依赖另一个程序包而无法安装;而使用yum工具时,就可以连同依赖的程序包一起安装,很方便。

RPM工具

RPM是Red Hat Package Manager的缩写,由Red Hat公司开发。它是以一种数据库记录的方式将我们所需要的套件安装到Linux主机的一套管理程序。

每个RPM包的名称都由-和.分成了若干部分。比如NetworkManager-wifi-1.4.0-12.el7.x86_64,NetworkManager-wifi为包名,1.4.0为包的版本信息,12.el7.x86_64为所运行平台的信息,12.el7为运行平台的发布版本号,el是enterprise linux的缩写。CPU目前分32位和64位,i386、i586、和i686是32位平台,x86_64为64位平台。另外有些RPM包并没有写具体的平台而是noarch(no architecture的缩写),这说明这个RPM包没有硬件平台限制。

查询一个包是否安装

查询一个包的命令为rpm -q RPM包名,这里的“包名”是不带平台信息和后缀名的。

rpm -q libjpeg-turbo-devel

可以使用名rpm -qa查询当前系统所有已安装的RPM包

得到一个已安装的RPM包的相关信息

可以使用命令rpm -qi 包名,这里也不需要加平台信息和后缀名。

列出一个RMP包的安装文件

rpm -ql 包名

列出某个文件属于哪个RPM包

rpm -qf 文件的绝对路径

rpm -qf /usr/lib64/NetworkManager/libnm-device-plugin-team.so

安装RPM包

rpm -ivh libjpeg-turbo-devel-1.2.90-5.el7.x86_64.rpm
  • -i :表示安装
  • -v :表示可视化
  • -h :表示显示安装进度

另外在安装RPM包时,常用的附带参数还包括如下几项

  • –force :表示强制安装,即使覆盖属于其他包的文件也要安装
  • –nodeps :表示当要安装的RPM包依赖于其他包时,即使其他包没有安装,也要安装这个包。

升级RPM包

升级RPM包的命令为rpm -Uvh filename

rpm -Uvh vim-filesystem-7.4.160-2.el7.x86_64.rpm

卸载RPM包

卸载RPM包的命令为rpm -e filename,这里的filename是通过rpm的查询功能所查询到的。

rpm -e libjpeg-turbo-devel

卸载时,-e选项后面的filename和安装时是有区别的。安装时,是把一个存在的文件作为参数,而卸载时只需要包名即可。

yum工具

该工具比使用RPM工具更加方便,yum工具最大的优势在于可以联网去下载所需要的RPM包,然后自动安装。如果要安装的RPM包有依赖关系,yum工具会帮我们依次安装所有相关的RPM包。

列出所有可用的RPM包

使用yum list命令,可以列出所有的RPM包资源。最左侧是RPM包名,中间是版本号,最右侧是安装信息(如果是已经安装,前面会有一个@符号)。

搜索RPM包

搜索RPM包的命令为yum search 相关关键词

yum search vim

除了这样搜索,还可以用grep过滤,从而找到相应的RPM包

yum list |grep 'vim'

查看RPM包的信息

yum info keepalived

安装RPM包

安装RPM包的命令为yum install [-y] RPM包名,如果不加-y选项,则会以与用户交互的方式安装。

yum install -y protobuf-vim

卸载RPM包

卸载RPM包的命令为yum remove [-y] RPM包名

yum remove protobuf-vim

卸载包的时候建议不要加-y选项,卸载时要看清楚,不要连其他重要的RPM包也一起卸载了。

remove命令只会卸载当前这个包,不会把下载它时依赖的那些包都卸载。就是我yum装A包的时候,同时安装了A的依赖包a1,a2,a3。当我们使用yum remove A卸载A包的是,a1,a2,a3包并不会一同被卸载掉。

可以用如下命令,就可以把其依赖的包也删除掉了

yum autoremove keepalived

升级RPM包

升级RPM包的命令为yum update [-y] RPM包名

yum update bash

利用yum工具下载RPM包

如果系统里没有装相关的依赖包会把依赖包也下载下来,如果装过了,就不会下载了。建议找一台没有装过软件的系统来下载RPM包,否则怕下载不全。

下载RPM包而不安装的命令

yum install 包名 -y --downloadonly

默认会下载到/var/cache/yum/x86_64/7/xxx/packages下面,这里的xxx是指base、updates或者extras等,它跟yum list最右侧的字符串是一致的。

指定下载目录

yum install 包名 -y --downloadonly --downloaddir=/usr/local/src

如果包已经安装过,那么使用yum install –downloadonly就不起作用了,它会提示这个包已经安装过,根本就下载不下来,那该怎么办?

yum reinstall -y --downloadonly 包名