Linux中的RPM命令

时间:2020-03-05 15:29:19  来源:igfitidea点击:

RPM软件包管理器(RPM)是Red Hat Linux及其衍生产品(如CentOS和Fedora)使用的功能强大的软件包管理系统。
RPM也指“ rpm”命令和“ .rpm”文件格式。
RPM软件包包括文件和元数据的存档,其中包括诸如依赖性和安装位置之类的信息。

在本教程中,我们将讨论如何使用'rpm'命令安装,更新,删除,验证,查询以及以其他方式管理RPM软件包。

安装,更新和删除RPM软件包

通常,要在基于Red Hat的发行版上安装新软件包,可以使用'yum'或者'dnf'命令,它们可以解析和安装所有软件包相关性。

在安装,更新和删除软件包时,始终应该优先使用'yum'或者'dnf'而不是'rpm'。

在安装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'命令。
以下命令将向我们显示系统上是否已安装OpenJDK 11软件包:

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

有关每个字符的含义,请参考RMP手册页。

要验证所有已安装的rpm软件包,请运行以下命令:

sudo rpm -Va