1. Overview

Linux-based systems use client applications to help in package management. Although some software packages are preinstalled by default, Linux users can install other packages when needed.

In this tutorial, we’ll see five approaches to listing all the installed packages in Linux – using apt, dpkg, snap, dnf, and flatpak.

2. Using apt Package Manager

apt is a command-line tool that works with Advanced Packaging Tool (APT) in Debian-based systems, such as Ubuntu. It is used to install new software packages, upgrade existing software packages, update the package list index, and upgrade the entire Ubuntu system.

2.1. List Installed Packages

We use the ––installed tag to only list the installed packages.

$ apt list --installed | head

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Listing...
accountsservice/now 0.6.55-0ubuntu12~20.04.4 amd64 [installed,upgradable to: 0.6.55-0ubuntu12~20.04.5]
acl/focal,now 2.2.53-6 amd64 [installed,automatic]
acpi-support/focal,now 0.143 amd64 [installed,automatic]
acpid/focal,now 1:2.0.32-1ubuntu1 amd64 [installed,automatic]
adduser/focal,focal,now 3.118ubuntu2 all [installed,automatic]
adwaita-icon-theme/focal-updates,focal-updates,now 3.36.1-2ubuntu0.20.04.2 all [installed,automatic]
aisleriot/focal,now 1:3.22.9-1 amd64 [installed,automatic]
alsa-base/focal,focal,now 1.0.25+dfsg-0ubuntu5 all [installed,automatic]
alsa-topology-conf/focal,focal,now 1.2.2-1 all [installed,automatic]
...

Installed packages have either of these three tags; [installed],[installed,automatic] and [installed,local]

  • [installed] – shows that the software package was installed manually from the repository list
  • [installed,automatic] – indicates that the software package was installed automatically as a dependency for another software package
  • [installed,local] – shows that the software package is not from the official repository list

2.2. List Packages

We use the apt list command to list all the installed and available packages.

$ apt list | head

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Listing...
0ad-data-common/focal,focal 0.0.23.1-1 all
0ad-data/focal,focal 0.0.23.1-1 all
0ad/focal 0.0.23.1-4ubuntu3 amd64
0install-core/focal 2.15.1-1 amd64
0install/focal 2.15.1-1 amd64
0xffff/focal 0.8-1 amd64
2048-qt/focal 0.1.6-2build1 amd64
2ping/focal,focal 4.3-1 all
2to3/focal,focal 3.8.2-0ubuntu2 all

The output of the apt list command is very long. We pipe it to the head command to only list the first ten lines.

2.3. List Specific Package

We add the package name to the apt list command to list a specific package.

$ apt list python3 --installed
Listing... Done
python3/focal,now 3.8.2-0ubuntu2 amd64 [installed,automatic]

We list the details of the package, python3.

3. Using dpkg Package Manager

dpkg is a package manager for Debian-based systems.

To list the installed packages on our system:

$ dpkg --get-selections | grep -w "install" | head
accountsservice                    install
acl                        install
acpi-support                    install
acpid                        install
adduser                        install
adwaita-icon-theme                install
aisleriot                    install
alsa-base                    install
alsa-topology-conf                install
alsa-ucm-conf                    install

The ––get-selections gets a list of package selections and writes the output to stdout. We can pipe this output to the grep command, which selects the lines that match the word “install”. The head command helps trim the output by displaying the first 1o lines of the output.

Another way is to use the dpkg-query tool. This tool queries the dpkg database.

$ dpkg-query -l | head
ii  accountsservice                            0.6.55-0ubuntu12~20.04.4            amd64        query and manipulate user account information
ii  acl                                        2.2.53-6                            amd64        access control list - utilities
ii  acpi-support                               0.143                               amd64        scripts for handling many ACPI events
ii  acpid                                      1:2.0.32-1ubuntu1                   amd64        Advanced Configuration and Power Interface event daemon
ii  adduser                                    3.118ubuntu2                        all          add and remove users and groups
ii  adwaita-icon-theme                         3.36.1-2ubuntu0.20.04.2             all          default icon theme of GNOME (small subset)
ii  aisleriot                                  1:3.22.9-1                          amd64        GNOME solitaire card game collection
ii  alsa-base                                  1.0.25+dfsg-0ubuntu5                all          ALSA driver configuration files
ii  alsa-topology-conf                         1.2.2-1                             all          ALSA topology configuration files
ii  alsa-ucm-conf                              1.2.2-1ubuntu0.5                    all          ALSA Use Case Manager configuration files

The -l option lists all the packages installed on our system.

4. Using snap Package Manager

snap is an alternative package manager in Linux developed by Canonical.

The snap list command lists all the packages installed using snap.

$ snap list
Name         Version    Rev    Tracking       Publisher   Notes
core         16-2.54.4  12834  latest/stable  canonical*  core
hello-world  6.4        29     latest/stable  canonical*  -

5. Using dnf Package Manager

dnf is intended to be a replacement for the yum package manager on Red Hat-based systems.

To list the installed packages on our system using dnf:

$ dnf list installed
Installed Packages
acl.x86_64                           2.2.53-1.el8                          @anaconda  
audit.x86_64                         3.0-0.10.20180831git0047a6c.el8       @anaconda  
audit-libs.x86_64                    3.0-0.10.20180831git0047a6c.el8       @anaconda

6. Using flatpak

flatpak is a package management software that is used to distribute software across various Linux distributions.

To view all the installed  flatpak applications on our system:

$ flatpak list --app
Name             Application ID                  Version      Branch      Installation
Fondo            com.github.calo001.fondo        1.3.8        stable      system
Flatseal         com.github.tchx84.Flatseal      1.5.2        stable      system
GNOME Boxes      org.gnome.Boxes                 3.36.6       stable      system

7. Conclusion

In this tutorial, we saw how to use the apt command to list all the installed and available packages in Linux. We also learned how to use dpkg, dpkg-query, snap, dnf, and flatpak to list the installed packages.