+
+ +

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.

+ +
+