Install a specific version of a package can be useful to avoid the bugs when you know which version of a package is concerned and make sure to disable a specific package from updating by holding the packages so it won't get automatically updated when you run 'apt-get upgrade'.
To handle Debian-based system packages, we use the apt-get command. To run this command you require administrative rights or a user with sudo privilege.
In this tutorial, I will show you how to install a specific version of a package on Ubuntu 16.04 or 20.04 LTS.
1) Check the available versions of packages
Sometimes you can face issues or bug with a version of a package, this may cause you to choose a version which doesn't encounter bugs. Before installing, it is possible to check the available versions of a package with the apt-cache madison
command. The syntax is
apt-cache madison package
You can see the output below
$ apt-cache madison virtualbox virtualbox | 5.0.40-dfsg-0ubuntu1.16.04.2 | http://cm.archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 Packages virtualbox | 5.0.18-dfsg-2build1 | http://cm.archive.ubuntu.com/ubuntu xenial/multiverse amd64 Packages
You can also use the syntax command below
apt-cache policy package
just as below
$ apt-cache policy virtualbox virtualbox: Installed: (none) Candidate: 5.0.40-dfsg-0ubuntu1.16.04.2 Version table: 5.0.40-dfsg-0ubuntu1.16.04.2 500 500 http://cm.archive.ubuntu.com/ubuntu xenial-updates/multiverse amd64 Packages 5.0.18-dfsg-2build1 500 500 http://cm.archive.ubuntu.com/ubuntu xenial/multiverse amd64 Packages
Then, with one of the two commands, you can decide to check the available version of a package with the releases versions on the official site or on the official GitHub.
2) Install a specific version of a package
When you have listed the versions to choose the specific one, you can install it with the apt-get install
command followed by the name and the version of the package. So, you need to follow the syntax as below:
apt-get install package=version -V
The -V
parameter helps to have more details about the installation
Practically, you can do as below:
# apt-get install virtualbox=5.0.18-dfsg-2build1 -V Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: dkms (2.2.0.3-2ubuntu11.5) libgsoap8 (2.8.28-1) libqt4-opengl (4:4.8.7+dfsg-5ubuntu2) libsdl1.2debian (1.2.15+dfsg1-3) libvncserver1 (0.9.10+dfsg-3ubuntu0.16.04.1) virtualbox-dkms (5.0.40-dfsg-0ubuntu1.16.04.2) .................... ....................
a. Simulate the installation
For some reason, you could need to make sure that the installation will not encounter any problem. To do that, it is possible to simulate the installation with the -s
parameter respecting the syntax
# apt-get install -s package
as below
# apt-get install -s virtualbox=5.0.18-dfsg-2build1
You can see that it shows the process of the installation but it is a just a simulation.
b. List the installed packages with the versions
You can need to check the version of an installed package. You can do it with the dpkg
command combined with grep
followed by the name of the package
# dpkg -l | grep virtualbox ii unity-scope-virtualbox 0.1+13.10.20130723-0ubuntu1 all VirtualBox scope for Unity ii virtualbox 5.0.18-dfsg-2build1 amd64 x86 virtualization solution - base binaries ii virtualbox-dkms 5.0.40-dfsg-0ubuntu1.16.04.2 all x86 virtualization solution - kernel module sources for dkms
If you want to filter the information, you can use the command as below
# dpkg -l | grep '^ii' | grep virtualbox | awk '{print $2 "\t" $3}' unity-scope-virtualbox 0.1+13.10.20130723-0ubuntu1 virtualbox 5.0.18-dfsg-2build1 virtualbox-dkms 5.0.40-dfsg-0ubuntu1.16.04.2
To list all the installed packages with version, you can use dpkg -l
command.
Conclusion
It's not very often you come across a scenario to install specific package, I hope this tutorial helped you. Please leave your comment and suggestions in the below comment section.
Related Read: How to List Installed Packages by Date on Linux
Once you've installed that package, you'll probably want to keep it by setting "apt-mark hold "
Hi Matt
Thanks for the comments.
I was able to install the version I wanted by using your instructions. Thanks.
Glad to know that. :-)