Apt Pinning Artful Aardvark Packages in Xenial Xerus
You want to set up apt-pinning so that you can explicitly install packages from
artful, on your xenial machine, but you also want to be able to issue the command
apt-get dist-upgrade
and have nothing automatically upgrade from xenial to artful.
In order to get this to work you have to edit three files. The first file is
/etc/apt/sources.list
. Make a double length version of the file, with the second
half of the file describing the artful equivalent of the xenial repos.
Like this.
# /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted
deb http://archive.ubuntu.com/ubuntu xenial-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial-updates main restricted
deb http://archive.ubuntu.com/ubuntu xenial universe
deb-src http://archive.ubuntu.com/ubuntu xenial universe
deb http://archive.ubuntu.com/ubuntu xenial-updates universe
deb-src http://archive.ubuntu.com/ubuntu xenial-updates universe
deb http://archive.ubuntu.com/ubuntu xenial multiverse
deb-src http://archive.ubuntu.com/ubuntu xenial multiverse
deb http://archive.ubuntu.com/ubuntu xenial-updates multiverse
deb-src http://archive.ubuntu.com/ubuntu xenial-updates multiverse
deb http://archive.ubuntu.com/ubuntu xenial-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu xenial-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu xenial-security main restricted
deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted
deb http://security.ubuntu.com/ubuntu xenial-security universe
deb-src http://security.ubuntu.com/ubuntu xenial-security universe
deb http://security.ubuntu.com/ubuntu xenial-security multiverse
deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse
## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu xenial partner
# deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://archive.ubuntu.com/ubuntu artful main restricted
deb-src http://archive.ubuntu.com/ubuntu artful main restricted
deb http://archive.ubuntu.com/ubuntu artful-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu artful-updates main restricted
deb http://archive.ubuntu.com/ubuntu artful universe
deb-src http://archive.ubuntu.com/ubuntu artful universe
deb http://archive.ubuntu.com/ubuntu artful-updates universe
deb-src http://archive.ubuntu.com/ubuntu artful-updates universe
deb http://archive.ubuntu.com/ubuntu artful multiverse
deb-src http://archive.ubuntu.com/ubuntu artful multiverse
deb http://archive.ubuntu.com/ubuntu artful-updates multiverse
deb-src http://archive.ubuntu.com/ubuntu artful-updates multiverse
deb http://archive.ubuntu.com/ubuntu artful-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu artful-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu artful-security main restricted
deb-src http://security.ubuntu.com/ubuntu artful-security main restricted
deb http://security.ubuntu.com/ubuntu artful-security universe
deb-src http://security.ubuntu.com/ubuntu artful-security universe
deb http://security.ubuntu.com/ubuntu artful-security multiverse
Now create a new file /etc/apt/preferences.d/xenial
with the
following content.
Package: *
Pin: release a=xenial
Pin-Priority: 900
And create one more file /etc/apt/preferences.d/artful
with the
following content.
Package: *
Pin: release a=artful
Pin-Priority: 300
Actually, I'm not entirely certain these are the optimal apt-pinning priority numbers. There's a little bit of art to apt-pinning.
So you can verify that nothing will automatically upgrade with the following command.
# the result of this command should be that nothing upgrades
apt-get dist-upgrade
But let's suppose that you want to explicitly install a package, and
hopefully the upgraded dependancies which it needs from artful.
apt-cache madison
is a useful command.
apt-cache madison weather-util
# outputs the following
weather-util | 2.3-2 | http://archive.ubuntu.com/ubuntu artful/universe amd64 Packages
weather-util | 2.0-1 | http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
weather-util | 2.0-1 | http://archive.ubuntu.com/ubuntu xenial/universe Sources
weather-util | 2.3-2 | http://archive.ubuntu.com/ubuntu artful/universe Sources
As you can see, two different version of weather-util are available (as well as two different source versions), one each from the xenial, and the artful repos.
But if you type apt-get install weather-util
, the old version from the xenial
repo will be installed. The intended behaviour is entirely a matter of getting
the apt-pinning priority numbers correct.
To explicitly install the newer version of weather-util, and perhaps more importantly it's upgraded weather-util-data dependancy, use the following command.
apt-get -t artful install weather-util
But hold on, HOLD ON! The above command doesn't actually confirm what version is
going to be installed, and you'd like to have one last look things over, so add
the -V
flag to your apt-get
command.
root@xhost:~# apt-get -t artful install weather-util -V
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
weather-util-data (2.3-2)
The following NEW packages will be installed:
weather-util (2.3-2)
weather-util-data (2.3-2)
0 upgraded, 2 newly installed, 0 to remove and 389 not upgraded.
Need to get 0 B/3375 kB of archives.
After this operation, 3557 kB of additional disk space will be used.
Do you want to continue? [Y/n]
That's what you're looking for.