For reasons of 3rd party software compatibility I would like to install ubuntu 14.04.1 and hold on version 14.04.1 until such time as I allow upgrade to 14.04.2, 14.04.3 etc...

I have read the ubuntu pinning instructions and looked at the two similar Ask Ubuntu questions pertaining to package holding but i don't see a clear manner of doing this:

the-following-packages-have-been-kept-back-why-and-how-do-i-solve-it

how-to-hold-a-package-back-from-being-upgraded

how-to-prevent-updating-of-a-specific-package

The best thing I can see is this neat way of holding everything back:

Save state:

`dpkg --get-selections > current_selections.txt`

Hold all packages:

`dpkg --get-selections | sed -r "s/\tinstall/hold/" |dpkg --set-selections`

Revert to unheld packages at some point in the future:

`dpkg --set-selections < current_selections.txt`

However this seems a bit excessive much, I'd like to carry on running apt-get update && apt-get upgrade and receiving updates for all packages except for those that constitute the upgrade from version 14.04.1 to a later point release.

Is this mad of me, is this counter to the spirit of using apt-get upgrade and Ubuntu's philosophy of point releases as pertaining to LTS versions, (if so why the heck are there point releases to LTS releases which break compatibility with other software, aren't they supposed to be stable and reasonably static targets?)

It also occurs to me that perhaps holding the kernel at the version on 14.04.1 (3.13.0-32) would do the trick as the rest of 14.04.2 and higher will be dependent in the newer kernel. I also have a hunch that it's the later kernel that's borking the software I'm using although the vendors docs aren't specific and i haven't got an answer from them about this.

For clarity, I'd like to add that i do not currently know where the source of incompatibility is between the software I am running and Ubuntu releases >14.04.1 Just that this is what I have been told by the vendor and this does appear to be the case. Whilst i get to the bottom of where these incompatibilities lie, I'm after a way that will allow me to remain on 14.04.1 whilst updating packages that don't constitute a move to anything >14.04.1. If the anwer to this is you can't that's fine, I'd just like to know.

TL:DR

1) How can I hold Ubuntu at version 14.04.1 and prevent upgrade to 14.04.2 or 14.04.3 whilst retaining the ability to apply updates to my packages.

2) Am I misunderstanding Ubuntu LTS strategy and point releases by expecting point releases not to change things dramatically enough to break compatibility

3) Can I achieve my aim by holding the kernel on the 14.04.1 (3.13.0-32) version, and is this sane?

Thanks.


Solution 1:

You do not need deliberately "stick on a point release".

The main difference between point releases is HWE Stack that includes new kernel major version and new xorg with related user space drivers.

When you do normal package upgrades, you will never be moved to a new kernel major version or new graphical stack.

Kernel 3.13 will get security and bug fixing updates till 14.04 EOL. You do not need to freeze on 3.13.0-32.

The current 3.13 version is 3.13.0.71.77.

If you are worried by the version number, you can freeze base-files package by running:

sudo apt-mark hold base-files

In this case you will get all updates, but you will never see "point" release number.

If you have installed 14.04.3, you can switch to kernel 3.13 by running

sudo apt-get install linux-generic

Then you will need to remove linux-image and linux-headers of version 3.19.

Solution 2:

You (and probably the vendor of your binary as well) misunderstand what Ubuntu point releases are about. All that happens is that at some point after 14.04 was released, the Ubuntu developers say: "Okay, 14.04 has been out for a while and there are a lot of updates. For someone installing 14.04 now it's a bit of a bummer to have to install all those updates, so let's create ISOs of 14.04 plus all the updates released until now, and call that 14.04.1." And then the same happens after that, yielding 14.04.2, etc.

So, "keeping 14.04.1 but still installing updates" is a contradiction. If you install from a 14.04.1 ISO and then install updates, you move towards 14.04.2, and ultimately you will reach it. You or the vendor of your binary need to find out what exactly causes it to work on a bare 14.04.1 install but not on a 14.04.2 one. This was caused by some updates that were installed after 14.04.1 was installed, and you need to find out which ones so you can block them. Otherwise, they will be installed as part of the normal updates, as well.

Oh and for your other questions :

2) Not really; it is reasonable to assume that Ubuntu point releases will not break things. Sadly, even the most reasonable assumptions fail sometimes.

3) Holding a kernel version is possible and should not break your system. You don't even really need to do anything: even if new kernels are installed, the old one will still be available. Of course, you will not benefit from bug fixes of new kernels if you use an old one, however.