I'd like to know if it's possible to install the system updates to a specific date, I mean be able to install only the updates released before the date I want and block everything afterwards.
Let me explain exactly what I need:
I'll install Ubuntu 18.04.2 from scratch and want to install all updates released to the date of June 1st.
For example, there's this package
mesa-vdpau-drivers_19.0.2-1ubuntu1~18.04.1_amd6.. released on 09-May-2019 20:28
If there's a mirror that haven't updated beyond a certain date, that would be the easiest - but 3 months is quite some time - none of them are older then 1-2 weeks:
A less precise date to June 2019 is to take a point release (18.04.2 / Feb 2019) as a base; download/update specific packages, hold them, and update everything else... but this could lead to breakages down the road.
It can be accessed simply by disabling bionic-updates repo in Software & Updates, or adding
sudo add-apt-repository "deb Index of /ubuntu/ bionic main restricted universe multiverse". Then you'll be able to work and download only these packages.
The problem is that mesa-vdpau-drivers is not included by default on a Ubuntu installation. If you enable "third-party software" on the LiveCD or try it afterwards, it will install the latest version.
It's a version I was using earlier, but I downloaded the .deb files (except devs and dbgsym), performed a sudo dpkg -i *.deb on the folder, it installed without warnings but then it broke the system and I wasn't able to login. It happens with every version I try, and I don't have a clue why.
That's why I'm asking for a more traditional way like an official repo from an early time, that will install everything I need in the case, and much likely, I miss something.
The updates Ubuntu released on 2019-07-03 broke the HW acceleration on my system, since then I'm intensively searching for a solution, created bug reports, without success.
I hope you guys can save me
God, how I wish I had a timeshift snapshot backed up.
I am afraid that the only more or less pragmatic solution is to install from scratch and add must-to-have extra packages from downloaded .deb's and do not update at all. (sigh and shrug)
You could compile that specific version yourself and install it to /usr/local. Software stored in /usr/local overrides what's installed by packages in /usr/bin, /etc/, /usr/share , etc effectively ensuring it will persist between updates while having an up-to-date system.
This could introduce new problems in the long-term, like wanting to uninstall if you delete the source code folder (sudo make clean).
First enable the "Source Code" repository in Software & Updates.
Grab the packages needed to compile the software:
sudo apt build-dep mesa
Extract that tar file and build it - presumably:
./configure
make -j4 # Set -j4 to number of CPU cores to speed it up
sudo make install
Once installed, you'll want to reboot and check if the older version is running and determine whether it's safe/worthwhile to remove the system packages.
Since this is tinkering with the graphics part of the system, it may be safer to test in a virtual machine before doing it on real hardware, since there is always a chance of breaking the graphical portion of your system.
Even with 'sudo apt build-dep mesa' I wasn't able to get everything required for the build.
I've installed a few missing dependencies, but there are still these gaps I can't find a way to fill:
Compiler for C supports argument -Qunused-arguments: NO
Compiler for C++ supports argument -Qunused-arguments: NO
Compiler for C supports argument -Winitializer-overrides: NO
Checking for function "dlopen": NO
I've crashed my system a lot of times messing with graphics, and for me timeshift is an excellent tool to revert to the previous state.
I'm no expert with compiling stuff, so I tend to research to see how others handled compiler errors/warnings, usually coming from other projects.
Compiler for C supports argument -Qunused-arguments: NO
Compiler for C++ supports argument -Qunused-arguments: NO
Compiler for C supports argument -Winitializer-overrides: NO
These are possibly because the compilers (I think gcc, glibc, etc) in 18.04 are too old or too new for this version of mesa. Newer compilers will only be in newer releases so It could be worth trying to compile in 19.04.
I guess it gets awkward as you'd ideally want the same version of the compiler (+ dependencies) as close to the time this version of mesa was published, which goes back to the topic's original question.
Checking for function "dlopen": NO
See if there is a dlopen.so on your system, it might just need re-linking, or if not, find out which -dev package provides it.