如何列出 CentOS 或 RHEL 上所有已安装的软件包
问题:我想知道我的 CentOS 机器上安装了哪些软件包,以便我可以在另一台计算机上复制所有安装。有没有办法获得自我设置初始 CentOS 系统以来安装的所有 RPM 软件包的完整列表?
当您想要创建一个与任何现有服务器 X 完全相同的设置的新服务器时,您需要找出服务器 X 上安装了哪些软件包。此外,当您尝试将旧 Linux 系统迁移到新安装的较新操作系统版本时,您需要跟踪以前安装的软件包列表。在其他时候,您可能只想知道从特定第三方存储库安装了哪些软件包。
如果您运行的是 CentOS 或 RHEL 系统,有几种方法可以从所有可用存储库或特定存储库获取所有已安装 RPM 软件包的列表。
方法一:rpm
显示 CentOS 上所有已安装软件包的最简单方法是通过 rpm 命令。以下命令查询所有已安装的软件包并显示结果。
$ rpm -qa

但是,rpm 命令本身无法识别存储库的概念。因此,如果您想获取从特定存储库安装的软件包列表,rpm
无法帮助您。
方法二:yum
与 rpm
类似,yum
软件包管理器还允许您获取已安装软件包的列表。
$ yum list installed

由于 yum 输出包含存储库信息,因此如果您只想获取从特定存储库安装的 RPM 软件包列表,可以使用 grep 过滤输出。以下命令显示从 EPEL 存储库安装的软件包列表。
$ yum list installed | grep @epel

方法三:repoquery
另一个用于查询 RPM 包和 yum 存储库信息的工具是 repoquery
。该工具对于检查包依赖关系、搜索包内的文件以及来自不同存储库的包非常有用。您可以完全自定义和格式化其输出,以便可以轻松地将其提供给其他工具。
repoquery
是 yum-utils
包的一部分,因此您需要先安装它。
$ sudo yum install yum-utils
列出所有已安装的软件包:
$ repoquery -a --installed
要列出 EPEL 存储库中所有已安装的软件包:
$ repoquery -a --installed --qf "%{name} %{ui_from_repo}" | grep @epel

方法四:yumdb
如果您只对特定存储库感兴趣,另一个有用的工具是 yumdb 命令。该实用程序查询本地 yum 数据库以查找有关已安装软件包的信息。 yum
数据库是由 yum
命令生成的平面文件键值存储,用于存储任何特定于包的信息。
要查看从 EPEL 存储库安装的所有软件包:
$ yumdb search from_repo epel
