How to find if a package is installed or not in Linux and Unix

A while ago, we wrote an article about how to find a package version in Linux. Today, we will see how to find if a package is installed or not in Linux and Unix platforms. Finding installed packages in GUI mode is easy. Just open the Menu or Dash, and enter the package name in search box. That’s all. It is simple as that. But, as you may know, there won’t be any GUI in Linux servers. So, having the ability to find out a package is installed or not in CLI mode is equally important. Now, Let us find out how can be this done in most Linux and Unix distributions.

Find if a package is installed or not in Linux

On Arch Linux:

In Arch Linux and its derivatives like Antergos and Manjaro LInux, we can do this using “pacman” command:

pacman -Qs nano

Sample output:

local/nano 2.6.3-1 (base)
 Pico editor clone with enhancements

sk@sk:~_001

As you can see in the above output, the nano package is installed in our Arch Linux.

On Fedora / RHEL / CentOS / Scientific Linux:

In RPM based Linux distributions like Fedora, RHEL and its clones like CentOS, Scientific Linux, we can find out if a package is installed using “rpm” command.

To find if a package (Ex.nano) is installed or not, just use:

rpm -qa | grep nano

Or,

rpm -qa | grep -i nano

Sample output:

nano-2.3.1-10.el7.x86_64

root@server1:~_009

To list all installed packages, run:

rpm -qa

Sample output:

libpciaccess-0.13.4-2.el7.x86_64
postfix-2.10.1-6.el7.x86_64
cronie-anacron-1.4.11-14.el7_2.1.x86_64
aic94xx-firmware-30-6.el7.noarch
numactl-libs-2.0.9-6.el7_2.x86_64

[...]

yum-plugin-fastestmirror-1.1.31-34.el7.noarch
gpgme-1.3.2-5.el7.x86_64
dhclient-4.2.5-42.el7.centos.x86_64
alsa-tools-firmware-1.0.28-2.el7.x86_64
libsoup-2.48.1-3.el7.x86_64

root@server1:~_010

On Debian / Ubuntu / Linux Mint:

In DEB based system like Debian, Ubuntu and its derivatives like Linux Mint, and Elementary OS, we can do this using “dpkg” command.

To search if a particular package (Ex.nano) is installed or not, use:

dpkg -s nano

Sample output:

Package: nano
Status: install ok installed
Priority: important
Section: editors
Installed-Size: 684
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Version: 2.5.3-2
Replaces: pico
Provides: editor
Depends: libc6 (>= 2.14), libncursesw5 (>= 6), libtinfo5 (>= 6)
Suggests: spell
Conflicts: pico
Conffiles:
 /etc/nanorc 948457d1e1e7372b50509b6314f323c4
Description: small, friendly text editor inspired by Pico
 GNU nano is an easy-to-use text editor originally designed as a replacement
 for Pico, the ncurses-based editor from the non-free mailer package Pine
 (itself now available under the Apache License as Alpine).
 .
 However, nano also implements many features missing in pico, including:
 - feature toggles;
 - interactive search and replace (with regular expression support);
 - go to line (and column) command;
 - auto-indentation and color syntax-highlighting;
 - filename tab-completion and support for multiple buffers;
 - full internationalization support.
Original-Maintainer: Jordi Mallach <jordi@debian.org>
Homepage: http://www.nano-editor.org/

sk@ubuntuserver: ~_004

As you see in the above output, nano package is installed in our Ubuntu system. This command not only shows whether the specified package is installed, but also the priority of the package, version number, maintainer name, dependencies, and its description etc. You don’t need to refer man pages or any online pages, just run this command to have complete details of this command in hand.

Alternatively, there are some more commands available to find the installed packages.

dpkg-query -l nano

Sample output:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-============-============-=================================
ii nano 2.5.3-2 amd64 small, friendly text editor inspi

sk@ubuntuserver: ~_005

Here is another one.

dpkg --get-selections | grep nano

Sample output:

nano install

sk@ubuntuserver: ~_006

Here is some few more commands to find if a package is installed or not.

dpkg --list | grep nano

Sample output:

ii nano 2.5.3-2 amd64 small, friendly text editor inspired by Pico

sk@ubuntuserver: ~_008

Or, use the following command:

dpkg --list | grep -i nano

To view list of all installed packages, run:

dpkg --list

Sample output:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-===========================-==================-==================-============================================================
ii accountsservice 0.6.40-2ubuntu11.1 amd64 query and manipulate user account information
ii acl 2.2.52-3 amd64 Access control list utilities
ii acpid 1:2.0.26-1ubuntu2 amd64 Advanced Configuration and Power Interface event daemon
ii adduser 3.113+nmu3ubuntu4 all add and remove users and groups

[...]

ii xml-core 0.13+nmu2 all XML infrastructure and XML catalog file support
ii xz-utils 5.1.1alpha+2012061 amd64 XZ-format compression utilities
ii zerofree 1.0.3-1 amd64 zero free blocks from ext2, ext3 and ext4 file-systems
ii zlib1g:amd64 1:1.2.8.dfsg-2ubun amd64 compression library - runtime

sk@ubuntuserver: ~_007

Find if a package is installed or not in Unix

I will be demonstrating this using FreeBSD 10.3. I never tried any other BSD operating systems except FreeBSD. There may be different commands to find out if a package installed in other BSD operating systems.

In FreeBSD, we can do this using “pkg” command:

pkg_info -Ix <package-name>

Example:

pkg info -Ix nano

Sample output:

nano-2.4.3 Nano's ANOther editor, an enhanced free Pico clone

sk@sk:~_003

To view all installed packages, you can use the following command:

pkg info

Or,

pkg version -v

Sample output:

gettext-runtime-0.19.6 GNU gettext runtime libraries and programs
indexinfo-0.2.4 Utility to regenerate the GNU info page index
nano-2.4.3 Nano's ANOther editor, an enhanced free Pico clone
pkg-1.8.7_1 Package manager
sudo-1.8.15 Allow others to run commands as root

sk@sk:~_002

This will take a few seconds to minute depending upon the number packages you have in your FreeBSD system.

Conclusion

That’s all for today. Hope this guide will help you to find the installed packages in Linux and Unix distributions. If you know any other methods, feel free to let us know in the comment section below.

I will be here with another article soon. If you find this guide useful, please share it on your social networks and support OSTechNix.

Happy weekend!

Cheers!!

Thanks for stopping by!

How can I benefit from this blog:

Have a Good day!!

You may also like...

  • xircon

    which e.g.
    which nano
    /usr/bin/nano

  • Gregory Pittman

    You can also use dnf/yum as in
    dnf list packagename
    or even
    dnf list package*
    What you get from these is a list of what’s installed and also what’s available in repositories. dnf allows a wildcard, and will also be case-insensitive in its search. Sometimes you don’t quite know what you’re looking for or the correct spelling.