tl;dr: Does Ubuntu LTS update libraries to versions where API elements may be changed/removed?
Due to Debian stable's lack of patching their kernels to support new hardware, I've run into problems where new laptops at my organization are too new to run Debian stable. I hired a Debian contractor to create an installation CD with a backported kernel, but one week later and he hasn't been able to produce it.
Now I'm forced to consider migrating the company to Ubuntu LTS. But I lose sleep over the following nightmare:
- I arrive at work early one morning a few days before a big demo for our customer.
- I've got some time so I
apt upgrade
. - After hitting
Y
I notice thatqt5-default
has incremented from5.9.5
to5.10.0
. - I compile our project only to find that the API has changed.
- Our team needs about 2 weeks to re-write the code to adapt.
- We miss the demo and lose the bid.
- The company goes bankrupt and we all lose our jobs.
With Debian, I don't have this worry because it simply doesn't update. We get security patches only. The heartbreaking trade-off is that new hardware isn't supported. Since I don't have the kind of pull with the OEM to order only laptops manufactured before Debian stable's release I need another solution.
Ubuntu LTS claims that they only perform "point releases". When I look at the Kernel history of 16.04 to figure out what that means, I see that they did update the kernel from 4.4
to 4.15
. This tells me that Ubuntu may not be willing to increment the major revision, but they are willing to increment the minor revision.
I'm fine with an update from libboost
from 1.67.0
to 1.67.1
, but I'm terrified of an update to 1.68.0
.
Can I be confident that Ubuntu LTS will not upgrade packages which are not reverse compatible?
If I cannot be confident in Ubuntu's stability, then the following are possible work-arounds, though suggestions are welcome:
apt-mark hold <package>
will prevent upgrades for specific packages, However:- Manually managing dependencies will be time-consuming
- I need to control this company-wide.
- Development could be done in a chroot environment running debian stable, isolating the development environment from desktop environment.
sudo apt upgrade
you can be sure of that; as major changes requiresudo apt dist-upgrade
. Also when a LTS release comes out, the packages are only upgraded with security-fixes (backported from later versions, no additional or changed features - so API/ABI breakage cannot occur). Neither debian or Ubuntu use a rolling model (and Ubuntu HWE kernels are patched; so won't contain any changes; if they did that kernel wouldn't be used). – guiverc Aug 04 '18 at 05:02