Yum

yum

Posted by Randle on April 30, 2021

Yum

RPM

1
rpm -ivh name.rpm #安装软件包

查询已安装的 RPM 软件信息

rpm -q [子选项] [软件名]

  • -qa:显示当前系统中以RPM方式安装的所有软件列表
  • -qi:查看指定软件包的名称、版本、许可协议、用途描述等详细信息
  • -ql:显示指定的软件包在当前系统中安装的所有目录、文件列表
  • -qf:查看当前指定的文件或目录是由哪个软件包所安装的

查询未安装的 RPM 软件包文件中信息

使用 “-qp” 选项时,必须以 RPM 软件包文件的路径作为参数(可以有多个),而不是软件包名称。

  • -qpi: 查看指定软件包的名称、版本、许可协议、用途描述等详细信息;
  • -qpl: 显示指定的软件包准备要安装的所有目录、文件列表;
1
2
rpm -qpi ethtool-4.5.3.el7.x86_64.rpm
rpm -qpl ethtool-4.5.3.el7.x86_64.rpm

安装、升级、卸载RPM软件包

  • -i:在当前系统中安装一个新的RPM软件包
  • -e:卸载指定名称的软件包
  • -U:检查并升级系统中的某个软件包,若该软件包原来并未安装,则等同于“-i”选项
  • -F:检查更新系统中的某个软件包,若该软件包原来并未安装,则放弃安装
  • -h:在安装或升级软件包的过程中,以“#”号显示安装进度
  • -v:显示软件安装过程中的详细信息
  • –force:强制安装某个软件包
  • –nodeps:在安装或升级、卸载一个软件包时,不检查与其他软件包的依赖关系

维护RPM数据库

重建RPM数据库

当RPM数据库发生损坏,且Linux操作系统无法自动完成修复时,将导致无法使用rpm命令正常地安装、卸载及查询软件包。这时可以使用rpm命令的--rebuilddb--initdb功能对RPM数据库进行重建,具体操作如下:

1
2
rpm --rebuilddb
rpm --initdb

导入公钥验证

在Linux/Unix应用领域,相当一部分软件厂商会对发布的软件包进行数字签名,以确保软件的完整性、合法性。对于用户来说,可以利用软件官方提供的公钥文件,自动对下载的软件包进行验证,如果在安装软件时出现验证失败的提示,则表示该软件包可能已经被非法篡改。

向RPM数据库中导入公钥文件时,需要用到--import选项。例如,执行以下操作可以把光盘目录中的RPM-GPG-KEY-CentOS-7公钥文件导入RPM数据库中。

1
rpm --import /mnt/RPM-GPG-KEY-CentOS-7

提取软件包内容

1
rpm2cpio *.rpm

只下载不安装

方法一:yumdownloader

如果只想通过 yum 下载软件的软件包,但是不需要进行安装的话,可以使用 yumdownloader 命令;   yumdownloader 命令在软件包 yum-utils 里面。

1
# yum install yum-utils -y

常用参数说明:

1
2
--destdir 指定下载的软件包存放路径
--resolve 解决依赖关系并下载所需的包

示例:

1
# yumdownloader --destdir=/tmp --resolve httpd

方法二:yum –downloadonly

yum 命令的参数有很多,其中就有只是下载而不需要安装的命令,并且也会自动解决依赖;通常和 –downloaddir 参数一起使用。

示例:

1
2
3
# yum install --downloadonly --downloaddir=/tmp/ vsftpd

# yum reinstall --downloadonly --downloaddir=/tmp/ vsftpd

说明:如果该服务器已经安装了需要下载的软件包,那么使用 install 下载就不行,可以使用 reinstall 下载。 放心(不会真的安装和重新安装,因为后面加了 –downloadonly,表明只是下载。

如果提示没有 –downloadonly 选项则需要安装 yum-plugin-downloadonly 软件包;

1
# yum install yum-plugin-downloadonly

方法三:reposync

该命令更加强大,可以将远端 yum 仓库里面的包全部下载到本地。这样构建自己的 yum 仓库,就不会遇到网络经常更新包而头痛的事情了。 该命令也是来自与 yum-utils 里面。

1
# yum install yum-utils -y

常用参数说明:

1
2
-r    指定已经本地已经配置的 yum 仓库的 repo源的名称。
-p    指定下载的路径

示例:

1
# reposync -r epel -p /opt/local_epel

参考