如何在CentOS Linux中检查并列出已安装的软件包
如何在CentOS Linux版本6.x/7.x/8.x中检查已安装的软件包?
如何列出CentOS Enterprise Linux服务器上已安装的软件包?
在本教程中我们学习了如何使用各种命令行实用程序检查并列出CentOS Linux服务器版本6.x/7.x/8.x中所有已安装的软件包。
如果您需要在不同的CentOS服务器之间还原/重新安装或镜像相同的软件包,则此列表很有用。
如何在CentOS中检查已安装的软件包
列出已安装软件包的步骤如下:
- 打开终端应用程序。
- 对于远程服务器,使用ssh命令登录:ssh user @ centos-linux-server-IP-here
- 显示有关CentOS上所有已安装软件包的信息,运行:
sudo yum list installed
- 要计算所有已安装的软件包,请运行:
sudo yum list installed | wc -l
- 是否要将所有已安装的软件包名称保存在文件中?试试:
已安装sudo yum list> my_list.txt
- 执行命令sudo yum update刷新软件包数据库并安装更新(如果有)。
让我们详细查看所有命令和示例。
使用yum命令检查并列出已安装的软件包
在dnf/yum手册页中:
list命令根据与系统的软件包关系转储软件包列表。
如果某个软件包存在于RPMDB中,则将安装该软件包;如果尚未安装但存在于DNF所知道的存储库中,则可以使用该软件包。
list命令还可以根据其他条件限制显示的包,例如仅适用于更新已安装软件包的软件包。
配置文件(.conf)中的exclude选项可能会影响结果,但是如果使用命令行选项disableexcludes,则它将确保列出所有已安装的软件包。
因此,要列出CentOS上已安装的软件包,请键入以下yum命令:
sudo yum list --installed sudo yum list --installed | more
使用yum列出CentOS Linux中所有已安装的软件包
也可以使用grep命令作为过滤器。
例如,确定是否已安装nginx:
sudo yum list --installed | grep nginx
是否要列出系统上安装的在任何已知存储库中不可用的额外软件包?
尝试:
sudo yum list --extras
输出示例
Last metadata expiration check: 0:21:58 ago on Friday 29 November 2019 05:19:57 PM UTC. Extra Packages qemu-guest-agent.x86_64 15:2.12.0-64.module_el8.0.0+44+94c1b039.2 @AppStream
列出我们已知的所有软件包:
sudo yum list --all
最后,显示可用的软件包,运行:
sudo yum list --available
可以使用wc命令计算所有已安装的软件包:
sudo yum list --installed | wc -l sudo yum list --all | wc -l sudo yum list --available | wc -l
显示需要更新/补丁的软件包列表
确保CentOS包装盒的安全是一项基本任务。
您也可以获取已安装软件包可用的所有升级的列表。
类型:
sudo yum list --upgrades sudo yum list --upgrades | more sudo yum list --upgrades | grep -i kernel
输出示例:
Available Upgrades bash.x86_64 4.4.19-8.el8_0 BaseOS dracut.x86_64 049-10.git20190115.el8_0.1 BaseOS dracut-config-rescue.x86_64 049-10.git20190115.el8_0.1 BaseOS dracut-network.x86_64 049-10.git20190115.el8_0.1 BaseOS dracut-squash.x86_64 049-10.git20190115.el8_0.1 BaseOS grub2-common.noarch 1:2.02-66.el8_0.1 BaseOS grub2-pc.x86_64 1:2.02-66.el8_0.1 BaseOS grub2-pc-modules.noarch 1:2.02-66.el8_0.1 BaseOS grub2-tools.x86_64 1:2.02-66.el8_0.1 BaseOS grub2-tools-extra.x86_64 1:2.02-66.el8_0.1 BaseOS grub2-tools-minimal.x86_64 1:2.02-66.el8_0.1 BaseOS initscripts.x86_64 10.00.1-1.el8_0.1 BaseOS kernel.x86_64 4.18.0-80.11.2.el8_0 BaseOS kernel-core.x86_64 4.18.0-80.11.2.el8_0 BaseOS kernel-modules.x86_64 4.18.0-80.11.2.el8_0 BaseOS kernel-tools.x86_64 4.18.0-80.11.2.el8_0 BaseOS kernel-tools-libs.x86_64 4.18.0-80.11.2.el8_0 BaseOS kpartx.x86_64 0.7.8-7.el8_0.2 BaseOS libnfsidmap.x86_64 1:2.3.3-14.el8_0.2 BaseOS platform-python.x86_64 3.6.8-4.el8_0 BaseOS python3-libs.x86_64 3.6.8-4.el8_0 BaseOS python3-perf.x86_64 4.18.0-80.11.2.el8_0 BaseOS python3-rpm.x86_64 4.14.2-11.el8_0 BaseOS
使用rpm命令获取所有已安装软件包的列表
只需运行以下rpm命令:
sudo rpm -qa sudo rpm -qa | more sudo rpm -qa | wc -l sudo rpm -qa | grep bash
使用rpm命令显示CentOS服务器上已安装软件包的列表
是否安装了nginx和bash软件包?
找出来,运行:
sudo rpm -q nginx `package nginx is not installed` sudo rpm -q bash `bash-4.4.19-7.el8.x86_64`
使用dnf-utils软件包中的repoquery命令
首先,在CentOS 8.x上安装yum-utils(CentOS 6.x/7.x)或dnf-utils:
sudo yum install yum-utils ## centos 6.x/7.x ## sudo yum install dnf-utils ## centos 8.x ##
输出示例:
Last metadata expiration check: 0:40:40 ago on Friday 29 November 2019 05:19:57 PM UTC. Dependencies resolved. =================================================================================================== Package Arch Version Repository Size =================================================================================================== Installing: dnf-utils noarch 4.0.2.2-3.el8 BaseOS 62 k Transaction Summary =================================================================================================== Install 1 Package Total download size: 62 k Installed size: 18 k Is this ok [y/N]: y Downloading Packages: dnf-utils-4.0.2.2-3.el8.noarch.rpm 11 MB/s | 62 kB 00:00 -------------------------------------------------------------------------------------------------- Total 6.1 MB/s | 62 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : dnf-utils-4.0.2.2-3.el8.noarch 1/1 Running scriptlet: dnf-utils-4.0.2.2-3.el8.noarch 1/1 Verifying : dnf-utils-4.0.2.2-3.el8.noarch 1/1 Installed: dnf-utils-4.0.2.2-3.el8.noarch Complete!
要在CentOS Linux中检查已安装的软件包,请执行:
sudo yum repoquery -a --installed
NetworkManager-1:1.14.0-14.el8.x86_64 NetworkManager-libnm-1:1.14.0-14.el8.x86_64 NetworkManager-team-1:1.14.0-14.el8.x86_64 NetworkManager-tui-1:1.14.0-14.el8.x86_64 acl-0:2.2.53-1.el8.x86_64 audit-0:3.0-0.10.20180831git0047a6c.el8.x86_64 audit-libs-0:3.0-0.10.20180831git0047a6c.el8.x86_64 authselect-0:1.0-13.el8.x86_64 authselect-compat-0:1.0-13.el8.x86_64 authselect-libs-0:1.0-13.el8.x86_64 basesystem-0:11-5.el8.noarch .... .. .... vim-minimal-2:8.0.1763-10.el8.x86_64 virt-what-0:1.18-6.el8.x86_64 which-0:2.21-10.el8.x86_64 xfsprogs-0:4.19.0-2.el8.x86_64 xkeyboard-config-0:2.24-3.el8.noarch xz-0:5.2.4-3.el8.x86_64 xz-libs-0:5.2.4-3.el8.x86_64 yum-0:4.0.9.2-5.el8.noarch zlib-0:1.2.11-10.el8.x86_64
所有nginx软件包的显示名称,体系结构和包含的存储库:
sudo yum repoquery --queryformat '%{name}.%{arch} : %{reponame}' nginx
列出提供网络服务器的所有可用软件包:
sudo yum repoquery --whatprovides webserver
或列出所有提供Web服务器但仅适用于i686体系结构的可用软件包:
sudo yum repoquery --whatprovides webserver --arch i686
有关repoquery选项的更多信息
使用-qf%{format}
或--queryformat%{format}
语法创建的自定义显示格式。
"%{format}"不过是每个匹配包要输出的字符串。
包中相应的属性将替换每次出现的%% << tag>}。
可以通过运行显示已识别标签的列表
dnf repoquery --querytags
输出示例:
Available query-tags: use --queryformat ".. %{tag} .." name, arch, epoch, version, release, reponame (repoid), evr, debug_name, source_name, source_debug_name, installtime, buildtime, size, downloadsize, installsize, provides, requires, obsoletes, conflicts, sourcerpm, description, summary, license, url
例如,可以按照以下方式构建花式列表:
repoquery -a --installed \ --queryformat "%{name}-%{arch}-%{version} installed at '%{installtime}' from '%{reponame}'"
输出示例:
newt-x86_64-0.52.20 installed at '2019-09-25 14:48' from '@System' nftables-x86_64-0.9.0 installed at '2019-09-25 14:48' from '@System' npth-x86_64-1.5 installed at '2019-09-25 14:48' from '@System' numactl-libs-x86_64-2.0.12 installed at '2019-09-25 14:48' from '@System' openldap-x86_64-2.4.46 installed at '2019-09-25 14:48' from '@System' openssh-clients-x86_64-7.8p1 installed at '2019-09-25 14:49' from '@System' openssh-server-x86_64-7.8p1 installed at '2019-09-25 14:49' from '@System' openssh-x86_64-7.8p1 installed at '2019-09-25 14:49' from '@System' openssl-libs-x86_64-1.1.1 installed at '2019-09-25 14:48' from '@System' openssl-pkcs11-x86_64-0.4.8 installed at '2019-09-25 14:48' from '@System' openssl-x86_64-1.1.1 installed at '2019-09-25 14:48' from '@System' os-prober-x86_64-1.74 installed at '2019-09-25 14:48' from '@System' p11-kit-trust-x86_64-0.23.14 installed at '2019-09-25 14:48' from '@System' p11-kit-x86_64-0.23.14 installed at '2019-09-25 14:48' from '@System' pam-x86_64-1.3.1 installed at '2019-09-25 14:48' from '@System' parted-x86_64-3.2 installed at '2019-09-25 14:49' from '@System' passwd-x86_64-0.80 installed at '2019-09-25 14:49' from '@System'
如何在CentOS上检查已安装的软件包并备份它们
可以使用以下语法列出和备份所有已安装的软件包:
rpm -qa --qf "%{NAME}\n" |\ sort > /nas/installed-software-mm-dd-yyyy.log
使用cat命令查看列表:
cat /nas/installed-software-mm-dd-yyyy.log
要在需要时还原所有这些软件包,请运行:
yum -y install $(cat /nas/installed-software-mm-dd-yyyy.log)
有关更多信息,请参见Linux获取用于重新安装/还原所有软件程序的已安装软件列表。
关于在CentOS历史记录命令中列出所有带有yum的已安装软件包的注释
yum命令在最新版本的CentOS/RHEL v6.x +上具有历史记录选项。
您可以在基于云的服务器上查看历史安装日期和数据。
键入以下命令以查看列表和历史记录:
sudo yum history
输出示例:
ID | Command line | Date and time | Action(s) | Altered ------------------------------------------------------------------------------ 4 | install dnf-utils | 2019-11-29 18:00 | Install | 1 3 | remove dnf-utils | 2019-11-29 18:00 | Removed | 1 2 | install yum-utils | 2019-11-29 17:21 | Install | 1 1 | | 2019-09-25 14:48 | Install | 396 EE
我们也可以使用上述输出中的ID号来详细检查历史记录条目:
sudo yum history info ID sudo yum history info 2
输出示例:
Transaction ID : 2 Begin time : Friday 29 November 2019 05:21:50 PM UTC Begin rpmdb : 393:911fb7e090842db316c671dc9e4b3bba7ffc7f2d End time : Friday 29 November 2019 05:21:50 PM UTC (0 seconds) End rpmdb : 394:e2078e6f2b3657ae7b67053902eae91a492a54a5 User : root <root> Return-Code : Success Releasever : 8 Command Line : install yum-utils Packages Altered: Install dnf-utils-4.0.2.2-3.el8.noarch @BaseOS
有关信息,请参见CentOS/RHEL。
请参见yum history命令的详细历史记录。