Dpkg command examples to manage packages in Ubuntu/Debian

By | August 2, 2020

Dpkg

Dpkg (Debian Package) is a package management system in Debian and debian based linux distributions like Ubuntu.

Dpkg is actually a low level command line utility to manage packages. It is different from tools like apt-get and gdebi.

Apt-get and Gdebi are more advanced tools that can resolve dependencies and install them so that the main package and work properly.

In this quick tutorial we shall take a look at some basic examples of the dpkg command and how to use it to manage packages on your system.

The dpkg command works on systems like Debian, Ubuntu, Linux Mint and Elementary OS.

Dpkg command examples

1. List all installed packages

This command will list all the installed packages. The information shall be printed in a tabular format with columns for Name, version, architecture and description. The list shall be huge and you can scroll up and down.

$ dpkg -l
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.55-0ubuntu10                            amd64        query and manipulate user account information
ii  accountwizard                                   4:19.04.3-0ubuntu1                          amd64        wizard for KDE PIM applications account setup
ii  acl                                             2.2.53-4                                    amd64        access control list - utilities
ii  acpi-support                                    0.143                                       amd64        scripts for handling many ACPI events

2. Search installed packages

You can search the list of installed packages for a particular entry and see if it is installed or not.

Search the installed packages for 'apache'

$ dpkg --get-selections | grep 'apache'
apache2                                         install
apache2-mpm-prefork                             install
apache2-suexec                                  install
apache2-utils                                   install
apache2.2-bin                                   install
apache2.2-common                                install
libapache-pom-java                              install
libapache2-mod-fcgid                            install
libapache2-mod-php5                             install

Or use the same l option to search for installed packages. This is actually easier.

$ dpkg -l php*
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
+++-===============================-====================-====================-====================================================================
un  php-doc                         <none>                                    (no description available)
un  php-imlib                       <none>                                    (no description available)
un  php-kolab-filter                <none>                                    (no description available)
un  php-openid                      <none>                                    (no description available)
un  php-pear                        <none>                                    (no description available)
un  php-radius-legacy               <none>                                    (no description available)
ii  php5                            5.4.6-1ubuntu1.2     all                  server-side, HTML-embedded scripting language (metapackage)
ii  php5-cgi                        5.4.6-1ubuntu1.2     amd64                server-side, HTML-embedded scripting language (CGI binary)
ii  php5-cli                        5.4.6-1ubuntu1.2     amd64                command-line interpreter for the php5 scripting language
ii  php5-common                     5.4.6-1ubuntu1.2     amd64                Common files for packages built from the php5 source

3. List files installed by a package

To find the path of all files that are installed by a certain package use "L" option with dpkg

$ dpkg -L php5-cli
/.
/etc
/etc/php5
/etc/php5/cli
/usr
/usr/share
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/php5.1.gz
/usr/share/doc
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/php5-cli
/usr/lib
/usr/lib/php5
/usr/lib/php5/20100525
/usr/bin
/usr/bin/php5
/etc/php5/cli/conf.d
/usr/share/doc/php5-cli

More examples

dpkg -i <package.deb> 
Installs a Debian package file; one that you downloaded manually, for example.

dpkg -c <package.deb> 
Lists the contents of <package.deb>, a .deb file.

dpkg -I <package.deb> 
Extracts package information from <package.deb>, a .deb file.

dpkg -r <package> 
Removes an installed package named <package>

dpkg -P <package> 
Purges an installed package named <package>. The difference between remove and purge is that while remove only deletes data and executables, purge also deletes all configuration files in addition.

dpkg -L <package> 
Gives a listing of all the files installed by <package>. See also dpkg -c for checking the contents of a .deb file.

dpkg -s <package> 
Shows information on the installed package <package>. See also apt-cache show for viewing package information in the Debian archive and dpkg -I for viewing package information extracted from a .deb file.

dpkg-reconfigure <package> 

Reconfigures an installed package, if it uses debconf (debconf provides that consistent configuration interface for package installation). You can reconfigure debconf itself if you want to change the front-end or priority of questions asked. For example, to reconfigure debconf with the dialog front-end, you simply run:

dpkg-reconfigure --frontend=dialog debconf

echo ``<package> hold'' | dpkg --set-selections 
Put <package> on hold (command line method)

dpkg --get-selections ``<package>'' 
Get the current status of <package> (command line method)

dpkg -S <file> 
Searches for <file> in package database, telling you which packages have that file in them.

Reconfigure installed packages

Packages can be reconfigured using the dpkg-reconfigure command.

For example reconfiguring phpmyadmin:

$ dpkg-reconfigure phpmyadmin

Conclusion

Those were some basic examples of the dpkg command. In most cases, you would probably not be using the dpkg package for package management since its a low level command and provides only basic functionality of installing or removing .deb packages.

It does not manage repositories and does not find and install dependencies for the main package to work properly.

The other commands like apt-get, aptitude, apt, gdebi should be used for installing and maintaining packages on your system.

If you have any feedback or questions, let us know in the comments below.

Leave a Reply

Your email address will not be published. Required fields are marked *