How to check and list installed packages in CentOS Linux

ADVERTISEMENTS



How to check installed packages in CentOS

How do I check installed packages in CentOS Linux version 6.x/7.x/8.x? How can I List installed packages on CentOS Enterprise Linux server?This page shows you how to check and list all installed packages in CentOS Linux server version 6.x/7.x/8.x using various command-line utilities. Such a list is useful in case if you need to restore/reinstall or mirror the same packages across different CentOS servers.

The procedure is as follows to list installed packages:

Open the terminal app. For remote server log in using the ssh command: ssh user@centos-linux-server-IP-here Show information about all installed packages on CentOS, run: sudo yum list installed To count all installed packages run: sudo yum list installed | wc -l Want to save all installed packages names in a file? Try: sudo yum list installed > my_list.txt Execute the command sudo yum update to refresh package database and install updates if any.

Let us see all commands and examples in details.

Check and list installed packages with yum command

From the dnf/yum man page:

The list command dumps lists of packages depending on the packages’ relation to the system. A package is installed if it is present in the RPMDB, and it is available if it is not installed but it is present in a repository that DNF knows about. The list command can also limit the displayed packages according to other criteria, e.g. to only those that update an installed package. The exclude option in configuration file (.conf) might influence the result, but if the command line option –disableexcludes is used, it ensure that all installed packages will be listed.

Hence, to lists installed packages on CentOS, type the following yum command:

sudo yum list --installed

sudo yum list --installed | more



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 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

One can use the grep command as filter too. For example, find out if nginx installed or not:Want to lists extras packages installed on the system that are not available in any known repository? Try:Sample outputs

Lists all packages known to us:

sudo yum list --all

Finally, show available packages, run:

sudo yum list --available

One can count all installed packages using the wc command:

sudo yum list --installed | wc -l

sudo yum list --all | wc -l

sudo yum list --available | wc -l

Display packages list that needs updates/patching

Keeping your CentOS box secure is an essential task. One can get a list of all upgrades available for the installed packages too. Type:

sudo yum list --upgrades

sudo yum list --upgrades | more

sudo yum list --upgrades | grep -i kernel

Sample outputs:

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 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

Get a list of all installed packages with rpm command

Simply run the following rpm command:

sudo rpm -qa

sudo rpm -qa | more

sudo rpm -qa | wc -l

sudo rpm -qa | grep bash



sudo rpm -q nginx

package nginx is not installed

sudo rpm -q bash

bash-4.4.19-7.el8.x86_64

Use repoquery command from dnf-utils package

Is nginx and bash package installed? Find out, run:

First, install yum-utils (CentOS 6.x/7.x) or dnf-utils on a CentOS 8.x:

sudo yum install yum-utils ## centos 6.x/7.x ##

sudo yum install dnf-utils ## centos 8.x ##

Sample outputs:

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! 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!

To check installed packages in CentOS Linux, execute:

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

Display name, architecture and the containing repository of all nginx packages:

sudo yum repoquery --queryformat '%{name}.%{arch} : %{reponame}' nginx

List all available packages providing “webserver”:

sudo yum repoquery --whatprovides webserver

Or list all available packages providing “webserver” but only for “i686” architecture:

sudo yum repoquery --whatprovides webserver --arch i686

More on repoquery option

Custom display format created using the -qf %{format} or --queryformat %{format} syntax. The %{format} is nothing but a string to output for each matched package. Every occurrence of %{<tag>} within is replaced by corresponding attribute of the package. List of recognized tags can be displayed by running

dnf repoquery --querytags

Sample outputs:

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

For instance, one can build fancy list as follows:

repoquery -a --installed \

--queryformat "%{name}-%{arch}-%{version} installed at '%{installtime}' from '%{reponame}'"

Sample outputs:

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'

How to check for installed packages on CentOS and backup them

One can list and backup all installed packages using the following syntax:

rpm -qa --qf "%{NAME}

" | \ sort > / nas / installed-software-mm-dd-yyyy.log rpm -qa --qf "%{NAME}

" |\ sort > /nas/installed-software-mm-dd-yyyy.log

Use the cat command to review list:

cat /nas/installed-software-mm-dd-yyyy.log

To restore all those packages when needed, run:

yum -y install $(cat /nas/installed-software-mm-dd-yyyy.log)

See “Linux Get List of Installed Software for Reinstallation / Restore All the Software Programs” for more info.

A note about listing all installed packages with yum on CentOS history command

The yum command has history option on the latest version of CentOS / RHEL v6.x+. One can view historical installation date and data on your cloud based server. Type the following command to see a list and history:

sudo yum history

Sample outputs:

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

We can examine history entries in detail too using ID number from the above outputs:

sudo yum history info ID

sudo yum history info 2

Sample outputs:

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 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

See “CentOS / RHEL See Detailed History Of yum history Commands” for info.

Conclusion

You learned how to check and list installed packages using the yum and rpm commands.