How to find out if package is installed in Linux

I am a new Linux system user. How do I find out if a package installed on my Linux based system using the command line option?

A Linux package is nothing but a collection of files and information about those files. Almost all software (web/database server or office app or web browser) on Linux installed using packages. The command to finding out if a package is installed in Linux depends upon your Linux distribution. Following are commands for different distributions.

Debian / Ubuntu Linux

Use dpkg command. It is a package manager for Debian/Ubuntu Linux. Suppose you want to find out package apache-perl or sudo is installed or not, type command:
$ dpkg -s apache-perl
Sample outputs:

dpkg-query: package 'apache-perl' is not installed and no information is available
Use dpkg --info (= dpkg-deb --info) to examine archive files,
and dpkg --contents (= dpkg-deb --contents) to list their contents.

Another example:
$ dpkg -s sudo
Sample outputs:

Package: sudo
Status: install ok installed
Priority: important
Section: admin
Installed-Size: 1692
Maintainer: Ubuntu Developers 
Architecture: amd64
Version: 1.8.20p2-1ubuntu1
Replaces: sudo-ldap
Depends: libaudit1 (>= 1:2.2.1), libc6 (>= 2.17), libpam0g (>= 0.99.7.1), libselinux1 (>= 1.32), libpam-modules, lsb-base
Conflicts: sudo-ldap
Conffiles:
 /etc/pam.d/sudo aa40f755f85bb33c9e79bd537e2979be
 /etc/sudoers edcf6528783ecffd3f248c8089dc298e
 /etc/sudoers.d/README 8d3cf36d1713f40a0ddc38e1b21a51b6
 /etc/sudoers.dist b679ac5d1611aa9ca815224b457b2341
Description: Provide limited super user privileges to specific users
 Sudo is a program designed to allow a sysadmin to give limited root
 privileges to users and log root activity.  The basic philosophy is to give
 as few privileges as possible but still allow people to get their work done.
 .
 This version is built with minimal shared library dependencies, use the
 sudo-ldap package instead if you need LDAP support for sudoers.
Homepage: http://www.sudo.ws/
Original-Maintainer: Bdale Garbee [email protected]

Use file /var/lib/dpkg/available to find out all package names available to you. Or you can use following command (list all packages in /var/lib/dpkg/status):
$ dpkg-query -l
You can also try to match package name using wild cards:
$ dpkg-query -l 'libc6*'
Once you’ve found package name, use the following command to get exact status (whether it is installed or not):
$ dpkg-query -W -f='${Status} ${Version}n' apache-perl
Sample outputs:

install ok installed 1.3.34-2

Red Hat Enterprise / Fedora Linux / Suse Linux / Cent OS

Under Red Hat/Fedora/CentOS/Suse Linux use the rpm command:
$ rpm -qa | grep {package-name}
For example find out package mutt installed or not:
$ rpm -qa | grep mutt
Output:

mutt-1.4.1-10

If you do not see or get any outputs (package name along with version), it means the package is not installed at all. You can display or list all installed packages with the following command:
$ rpm -qa
$ rpm -qa | less

You can conditionally do something if a rpm command succeeded or failed to find package using bash shell if command:

#!/bin/bash
pkg="htop"
if rpm -q $pkg
then
    echo "$pkg installed"
else
    echo "$pkg NOT installed"
fi

On a CentOS/RHEL version 6.x/7.x and above use the following yum command to tell whether a package named htop is installed:
$ yum list installed {PACKAGE_NAME_HERE}
$ yum list installed htop

Sample outputs:

Loading mirror speeds from cached hostfile
 * base: ftp.iitm.ac.in
 * epel: mirror1.ku.ac.th
 * extras: ftp.iitm.ac.in
 * updates: ftp.iitm.ac.in
Package htop-2.0.2-1.el7.x86_64 already installed and latest version
Nothing to do

If you are using Fedora Linux, try the following dnf command:
$ dnf list installed {PACKAGE_NAME_HERE}
$ dnf list installed htop

See also:

Posted by: SXI ADMIN

The author is the creator of SXI LLC and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.