I find many people asking a question of How do I check a version of an installed package on my Ubuntu system?, How do I know package versions available on Ubuntu / Debian?. This guide will show you few commands that can be of help. Ubuntu and Debian ship with two main package managers:

  • apt – Manage packages from repositories
  • dpkg  – Manage packages downloaded to the system. Often in .deb format
  • aptitude can be installed

To check for a version of an installed package on your Ubuntu server/desktop, use any of the following methods:

Method 1: Using apt command

The apt command has an option list that you can use to check a version of the package installed on an Ubuntu or Debian system. For example, to check a version of the docker-ce package installed on my Ubuntu 16.04 server, I’d run:

$ apt list docker-ce
Listing... Done
docker-ce/xenial,now 18.03.1~ce-0~ubuntu amd64 [installed]

To see all versions of the package available on the repository, pass the -a option.

$ apt list docker-ce -a
Listing... Done
docker-ce/xenial,now 18.03.1~ce-0~ubuntu amd64 [installed]
docker-ce/xenial 18.03.0~ce-0~ubuntu amd64
docker-ce/xenial 17.12.1~ce-0~ubuntu amd64
docker-ce/xenial 17.12.0~ce-0~ubuntu amd64
docker-ce/xenial 17.09.1~ce-0~ubuntu amd64
docker-ce/xenial 17.09.0~ce-0~ubuntu amd64
docker-ce/xenial 17.06.2~ce-0~ubuntu amd64
docker-ce/xenial 17.06.1~ce-0~ubuntu amd64
docker-ce/xenial 17.06.0~ce-0~ubuntu amd64
docker-ce/xenial 17.03.2~ce-0~ubuntu-xenial amd64
docker-ce/xenial 17.03.1~ce-0~ubuntu-xenial amd64
docker-ce/xenial 17.03.0~ce-0~ubuntu-xenial amd64

The first one the list is currently installed package and all others are available on the repository for installation.

For more details about the package, use the apt show.

[pastacode lang=”bash” manual=”%24%20apt%20show%20docker-ce%0APackage%3A%20docker-ce%0AVersion%3A%2018.03.1~ce-0~ubuntu%0APriority%3A%20optional%0ASection%3A%20admin%0AMaintainer%3A%20Docker%20%3Csupport%40docker.com%3E%0AInstalled-Size%3A%20181%20MB%0ADepends%3A%20iptables%2C%20init-system-helpers%20(%3E%3D%201.18~)%2C%20lsb-base%20(%3E%3D%204.1%2BDebian11ubuntu7)%2C%20libc6%20(%3E%3D%202.17)%2C%20libdevmapper1.02.1%20(%3E%3D%202%3A1.02.97)%2C%20libltdl7%20(%3E%3D%202.4.6)%2C%20libseccomp2%20(%3E%3D%202.3.0)%2C%20libsystemd0%0ARecommends%3A%20aufs-tools%2C%20ca-certificates%2C%20cgroupfs-mount%20%7C%20cgroup-lite%2C%20git%2C%20pigz%2C%20xz-utils%2C%20apparmor%0AConflicts%3A%20docker%20(%3C%3C%201.5~)%2C%20docker-ee%2C%20docker-engine%2C%20docker-engine-cs%2C%20docker.io%2C%20lxc-docker%2C%20lxc-docker-virtual-package%0AReplaces%3A%20docker-engine%0AHomepage%3A%20https%3A%2F%2Fdockerproject.org%0ADownload-Size%3A%2034.0%20MB%0AAPT-Manual-Installed%3A%20yes%0AAPT-Sources%3A%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0ADescription%3A%20Docker%3A%20the%20open-source%20application%20container%20engine%0A%20Docker%20is%20an%20open%20source%20project%20to%20build%2C%20ship%20and%20run%20any%20application%20as%20a%0A%20lightweight%20container%0A%20.%0A%20Docker%20containers%20are%20both%20hardware-agnostic%20and%20platform-agnostic.%20This%20means%0A%20they%20can%20run%20anywhere%2C%20from%20your%20laptop%20to%20the%20largest%20EC2%20compute%20instance%20and%0A%20everything%20in%20between%20-%20and%20they%20don’t%20require%20you%20to%20use%20a%20particular%0A%20language%2C%20framework%20or%20packaging%20system.%20That%20makes%20them%20great%20building%20blocks%0A%20for%20deploying%20and%20scaling%20web%20apps%2C%20databases%2C%20and%20backend%20services%20without%0A%20depending%20on%20a%20particular%20stack%20or%20provider.%0A” message=”” highlight=”” provider=”manual”/]

For details about all versions of the docker-ce package, use:

$ apt show docker-ce -a

Method 2: Using apt-cache

apt-cache is a Debian command line tool used to query the APT cache. It provides operations to search and generate interesting output from the package metadata. To search for package version using apt-cache, run:

[pastacode lang=”bash” manual=”%24%20apt-cache%20policy%20docker-ce%0Adocker-ce%3A%0A%20%20Installed%3A%2018.03.1~ce-0~ubuntu%0A%20%20Candidate%3A%2018.03.1~ce-0~ubuntu%0A%20%20Version%20table%3A%0A%20***%2018.03.1~ce-0~ubuntu%20500%0A%20%20%20%20%20%20%20%20500%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20%20%20%20%20%20%20%20100%20%2Fvar%2Flib%2Fdpkg%2Fstatus%0A%20%20%20%20%2018.03.0~ce-0~ubuntu%20500%0A%20%20%20%20%20%20%20%20500%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20%20%20%20%2017.12.1~ce-0~ubuntu%20500%0A%20%20%20%20%20%20%20%20500%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20%20%20%20%2017.12.0~ce-0~ubuntu%20500%0A%20%20%20%20%20%20%20%20500%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20%20%20%20%2017.09.1~ce-0~ubuntu%20500%0A%20%20%20%20%20%20%20%20500%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20%20%20%20%2017.09.0~ce-0~ubuntu%20500%0A%20%20%20%20%20%20%20%20500%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20%20%20%20%2017.06.2~ce-0~ubuntu%20500%0A%20%20%20%20%20%20%20%20500%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20%20%20%20%2017.06.1~ce-0~ubuntu%20500%0A%20%20%20%20%20%20%20%20500%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20%20%20%20%2017.06.0~ce-0~ubuntu%20500%0A%20%20%20%20%20%20%20%20500%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20%20%20%20%2017.03.2~ce-0~ubuntu-xenial%20500%0A%20%20%20%20%20%20%20%20500%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20%20%20%20%2017.03.1~ce-0~ubuntu-xenial%20500%0A%20%20%20%20%20%20%20%20500%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20%20%20%20%2017.03.0~ce-0~ubuntu-xenial%20500%0A%20%20%20%20%20%20%20%20500%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages” message=”” highlight=”” provider=”manual”/]

The first line show installed version:

Installed: 18.03.1~ce-0~ubuntu --> Show installed version

The other lines give info about other packages available on the repository. Using apt-cache madison will give the same output.

[pastacode lang=”bash” manual=”%24%20apt-cache%20madison%20docker-ce%0A%20docker-ce%20%7C%2018.03.1~ce-0~ubuntu%20%7C%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20docker-ce%20%7C%2018.03.0~ce-0~ubuntu%20%7C%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20docker-ce%20%7C%2017.12.1~ce-0~ubuntu%20%7C%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20docker-ce%20%7C%2017.12.0~ce-0~ubuntu%20%7C%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20docker-ce%20%7C%2017.09.1~ce-0~ubuntu%20%7C%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20docker-ce%20%7C%2017.09.0~ce-0~ubuntu%20%7C%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20docker-ce%20%7C%2017.06.2~ce-0~ubuntu%20%7C%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20docker-ce%20%7C%2017.06.1~ce-0~ubuntu%20%7C%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20docker-ce%20%7C%2017.06.0~ce-0~ubuntu%20%7C%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20docker-ce%20%7C%2017.03.2~ce-0~ubuntu-xenial%20%7C%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20docker-ce%20%7C%2017.03.1~ce-0~ubuntu-xenial%20%7C%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A%20docker-ce%20%7C%2017.03.0~ce-0~ubuntu-xenial%20%7C%20https%3A%2F%2Fdownload.docker.com%2Flinux%2Fubuntu%20xenial%2Fstable%20amd64%20Packages%0A” message=”” highlight=”” provider=”manual”/]

Method 3: Using aptitude

Ubuntu doesn’t ship with aptitude, you can install it using:

$ sudo apt-get install aptitude

To check package versions available run:

[pastacode lang=”bash” manual=”%24%20aptitude%20versions%20docker-ce%0Ap%20%20%2017.03.0~ce-0~ubuntu-xenial%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xenial%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500%20%0Ap%20%20%2017.03.1~ce-0~ubuntu-xenial%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xenial%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500%20%0Ap%20%20%2017.03.2~ce-0~ubuntu-xenial%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xenial%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500%20%0Ap%20%20%2017.06.0~ce-0~ubuntu%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xenial%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500%20%0Ap%20%20%2017.06.1~ce-0~ubuntu%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xenial%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500%20%0Ap%20%20%2017.06.2~ce-0~ubuntu%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xenial%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500%20%0Ap%20%20%2017.09.0~ce-0~ubuntu%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xenial%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500%20%0Ap%20%20%2017.09.1~ce-0~ubuntu%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xenial%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500%20%0Ap%20%20%2017.12.0~ce-0~ubuntu%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xenial%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500%20%0Ap%20%20%2017.12.1~ce-0~ubuntu%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xenial%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500%20%0Ap%20%20%2018.03.0~ce-0~ubuntu%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xenial%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500%20%0Ai%20%20%2018.03.1~ce-0~ubuntu%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xenial%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20500%20%0A” message=”” highlight=”” provider=”manual”/]