Debian releases always contain a specific version of each package. Whether this is the Linux Kernel, the Shell (e.g. Bash) or Apache web server, the version itself remains the same. Only security (and very important bug) fixes will be added to that particular package version.
However there are a couple of reasons why a newer package would be preferred:
- New features
- Stability or performance improvements
- Better hardware support
- Package not available in default repositories
In these situations, newer packages can (often, not always) be installed from the so-called backports repositories.
Enabling backports repositories
The best and easiest way to enable the backports repositories is to create a dedicated list entry/file inside /etc/apt/sources.list.d:
root@buster:~# echo "deb http://deb.debian.org/debian buster-backports main contrib non-free" | sudo tee -a /etc/apt/sources.list.d/backports.list
In this case , the buster-backports are enabled on a Debian Buster machine.
With a simple apt update (or apt-get update) the new repository will be enabled.
root@buster:~# apt-get update Get:1 http://security.debian.org buster/updates InRelease [65.4 kB] Get:2 http://deb.debian.org/debian buster-backports InRelease [46.7 kB] Hit:3 https://packages.sury.org/php buster InRelease Hit:4 http://httpredir.debian.org/debian buster InRelease Get:5 http://deb.debian.org/debian buster-backports/main amd64 Packages [484 kB] Get:6 http://deb.debian.org/debian buster-backports/main Translation-en [407 kB] Get:7 http://deb.debian.org/debian buster-backports/contrib amd64 Packages [9,084 B] Get:8 http://deb.debian.org/debian buster-backports/contrib Translation-en [8,044 B] Get:9 http://deb.debian.org/debian buster-backports/non-free amd64 Packages [33.9 kB] Get:10 http://deb.debian.org/debian buster-backports/non-free Translation-en [38.3 kB] Get:11 http://security.debian.org buster/updates/main amd64 Packages [299 kB] Get:12 http://security.debian.org buster/updates/main Translation-en [156 kB] Fetched 1,547 kB in 1s (1,524 kB/s) Reading package lists... Done
Practical example: phpmyadmin package
Let's use phpmyadmin as a hands-on practical example. Strangely this package never made it into the official Buster release:
However it was added into the buster-backports repositories afterwards. Now with the backports repositories enabled, phpmyadmin is installable:
root@buster:~# apt-cache search phpmyadmin adminer - Web-based database administration tool phpliteadmin - web-based SQLite database admin tool phpliteadmin-themes - web-based SQLite database admin tool - themes phpmyadmin - MySQL web administration tool php-phpmyadmin-motranslator - translation API for PHP using Gettext MO files php-phpmyadmin-shapefile - translation API for PHP using Gettext MO files php-phpmyadmin-sql-parser - validating SQL lexer and parser
Without backports enabled, phpmyadmin would not appear in the list.
Now when trying to install phpmyadmin, a dependency error might show up:
root@buster:~# apt-get install phpmyadmin Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: phpmyadmin : Depends: php-twig (> 2.9) but 2.6.2-2 is to be installed E: Unable to correct problems, you have held broken packages.
This happens because apt is now confused as two different php-twig package versions show up:
root@buster:~# apt-cache show php-twig | egrep "(^Package|Version)" Package: php-twig Version: 2.14.3-1~bpo10+1 Package: php-twig Version: 2.6.2-2
From the version line you can quickly spot the backports (bpo) version. To tell apt to use the php-twig package from the backports repos, define the version:
root@buster:~# apt-get install phpmyadmin php-twig=2.14.3-1~bpo10+1
As an alternative, the backports repositories can be configured with a higher apt pinning (priority). Check out our article Advanced configuration and troubleshooting of APT package manager.
Installing packages from backports is mostly hassle-free, especially for smaller packages without a lot of dependencies. But packages which require a lot of dependencies might break existing package installations and applications.