如何在CentOS Linux中检查并列出已安装的软件包

时间:2020-01-09 10:37:38  来源:igfitidea点击:

如何在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命令的详细历史记录。