How to check package version

Sometimes I need to check version of the installed package, compare it with the available version or just verify that correct version is already installed. I will show you how to quickly perform these checks.

Check version of the installed package

You can quickly check version of the installed package using dpkg command.

$ dpkg -s cpp
Package: cpp
Status: install ok installed
Priority: optional
Section: interpreters
Installed-Size: 63
Maintainer: Debian GCC Maintainers <[email protected]>
Architecture: amd64
Multi-Arch: allowed
Source: gcc-defaults (1.120)
Version: 4:4.7.2-1
Depends: cpp-4.7 (>= 4.7.2-1~)
Suggests: cpp-doc
Conflicts: cpp-doc (<< 1:2.95.3)
Description: GNU C preprocessor (cpp)
 The GNU C preprocessor is a macro processor that is used automatically
 by the GNU C compiler to transform programs before actual compilation.
 This package has been separated from gcc for the benefit of those who
 require the preprocessor but not the compiler.
 This is a dependency package providing the default GNU C preprocessor.

Print the most important information in the table.

$ dpkg -l cpp
| 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  cpp                4:4.7.2-1    amd64            GNU C preprocessor (cpp)

More efficient solution would be to filter package version using grep command.

$ dpkg -s cpp | grep Version
Version: 4:4.7.2-1

Use dpkg-query utility to output data using custom format.

$ dpkg-query -W --showformat='${Package} version ${Version} for architecture ${Architecture}\n' cpp
cpp version 4:4.7.2-1 for architecture amd64

You will receive an error if given package is not installed.

$ dpkg -s mc
dpkg-query: package 'mc' 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.

Check version of the installed or available package

You should use utilities described in this section instead of the previous one if you are not sure that package is already installed.


Use this command to query APT cache and list current and available package versions.

$ apt-cache policy iceweasel
  Installed: 31.2.0esr-2~deb7u1
  Candidate: 31.2.0esr-2~deb7u1
  Version table:
 *** 31.2.0esr-2~deb7u1 0
      500 wheezy/updates/main amd64 Packages
      100 /var/lib/dpkg/status
     24.4.0esr-1~deb7u2 0
      500 wheezy/main amd64 Packages


Current and available package versions can be also displayed using aptitude utility.

$ aptitude versions ^iceweasel$
Package iceweasel:
p A 24.4.0esr-1~deb7u2                        stable                 500
i A 31.2.0esr-2~deb7u1                        stable                 500

Of course you can print data using custom format in columns or without them.

$ aptitude search snort -F "%c %M %p %V %v"
p   fwsnort                                   1.6.2-1        <none>
i   snort                           
i A snort-common                    
i A snort-common-libraries          
p   snort-doc                             <none>
p   snort-mysql                           <none>
p   snort-pgsql                           <none>
v   snort-rules                               <none>         <none>
i A snort-rules-default             

Use an additional --disable-columns parameter if you want to disable columns.

Ending notes

Please read dpkg, dpkg-query, aptitude manual pages and install aptitude-doc-en package for additional information.