Linux 中的 RPM 命令


RPM 包管理器 (RPM)是一个强大的包管理系统,它广泛用于 Red Hat Linux 和它的衍生版本,例如 CentOS 和 Fedora。RPM 涉及rpm
命令和.rpm
文件。一个 RPM 包由一个压缩包和 meta 信息(包含例如依赖包和安装位置等信息)组成。
在这篇指南中,我们将会讨论如何使用rpm
命令去安装,更新,移除,验证,查询和其他的命令管理 RPM 软件包。
一、安装,更新和移除 RPM 软件包
通常,想要在基于 Red Hat 的发行版本上安装一个新的软件包,你可以使用yum
或者dnf
命令,它们可以解决和安装所有的依赖包。
在安装,更新,和移除软件包时,你可以选择yum
或者dnf
。
在安装一个 RPM 包之前,你必须要先使用一个浏览器或者命令行工具,例如 curl 或者 wget 来下载软件包到你的系统上。
当安装 RPM 包时,确认它们是为你的系统架构和你的 CentOS 系统版本而构建的。在替换或者更新重要的系统包,例如 glibc,systemd,其他保证系统正常运行的服务和的库时,必须格外小心。
仅仅 root 用户或者其他有 sudo 权限的用户可以安装或者移除 RPM 包。
想要通过rpm
命令安装一个 RPM 软件包时,使用-i
选项,加上软件包的名字:
sudo rpm -ivh package.rpm
这个-v
选项告诉rpm
显示详细日志,-h
选项显示安装进度。
通过将 RPM 软件包的 URL 地址提供给rpm
命令,可以避免下载到本地的步骤:
sudo rpm -ivh https://example.com/package.rpm
想要升级一个 RPM 软件包,使用-u
选项。如果软件包没有安装,则会直接进行安装:
sudo rpm -Uvh package.rpm
如果你正在安装或者升级的软件包依赖于其他没有安装的依赖包,那么rpm
命令将会显示一个清单,列出所有缺失的依赖包。你可以手动下载并安装这些依赖包。
如果想要在没有安装所有依赖包的情况下,继续安装一个 RPM 软件包,请使用--nodeps
选项:
sudo rpm -Uvh --nodeps package.rpm
想要移除(擦除)一个 RPM 软件包,使用-e
选项:
sudo rpm -e package.rpm
当你想要移除一个软件包,但是不想移除它的依赖包时,使用--nodeps
选项。
sudo rpm -evh --nodeps package.rpm
--test
选项告诉rpm
模拟运行安装或者移除命令。它仅仅显示这个命令是否会正常运行。
sudo rpm -Uvh --test package.rpm
二、查询 RPM 软件包
-q
选项告诉rpm
命令运行一次查询。
想要查看某个包是否被安装,将包名传给rpm -q
命令。下面的命令将会显示 OpenJDK14 是否被安装在系统上:

sudo rpm -q java-11-openjdk-devel
如果这个软件包被安装,你将会看下这样的显示:
java-11-openjdk-devel-11.0.4.11-0.el8_0.x86_64
传递-i
可以获得更多关于被查询软件包的信息:
sudo rpm -qi java-11-openjdk-devel
想要获得一个被安装 RPM 软件包的所有文件列表:
sudo rpm -ql package
如果你想查找某个特殊文件属于哪个被安装软件包,输入:
sudo rpm -qf /path/to/file
想要获得你系统上所有已经安装的软件包的列表,使用-a
选项:
sudo rpm -qa
三、验证 RPM 软件包
当验证一个软件包时,rpm
命令检测一个软件包所安装的每个文件是否都存在系统上,文件的摘要,归属,权限等等。
想要验证一个已经安装的软件包,使用-v
选项。例如,想要验证 openldap 包,你可以输入:
sudo rpm -V openldap-2.4.46-9.el8.x86_64
如果验证通过,这个命令不会输出任何结果。否则,如果某些检测失败,它会输出一些错误,提示本次测试失败。
例如,下面的输入显示,文件的 mTime 已经被修改(”T“):
.......T. c /etc/openldap/ldap.conf
阅读 RPM man 页面,关于每个字符的意义。
想要验证所有的 rpm 软件包,使用下面的命令:
sudo rpm -Va
四、总结
rpm
是一个低级别的命令行工具,它用来安装,查询,验证,升级以及移除 RPM 软件包。当安装 RPM 软件包时,应该更偏向于使用yum
或者dnf
,因为他们会为你自动解决所有依赖问题。
想要获得更多关于rpm
的可用信息,在终端输入man rpm
或者浏览:RPM.org网站。
如果你有任何疑问,请通过以下方式联系我们:
微信:

微信群: 加上面的微信,备注微信群
QQ: 3217680847

原文 :https://linuxize.com/post/rpm-command-in-linux
版权声明:本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
