One of the things that force to install a new version of a distribution is the compatibility problem: new applications use new libraries (example, OBS Studio 3.0 is no longer available for Mint 20.x / Focal, since it uses Qt6, not available on Mint 20.x / Focal).
Most of the libraries problems (ffmpeg 4.4.x, ffmpeg 5, ffmpeg 6, Qt 5.15, Qt 6...) can be solved by the use of PPAs or by compiling these libraries.
But, even after those libraries upgrades, one problem remains: glibc, and its library "libc.so.6".
On Mint 21.x, its version is 2.35:
Code: Select all
ldd --version
ldd (Ubuntu GLIBC 2.35-0ubuntu3.6) 2.35
Copyright © 2022 Free Software Foundation, Inc.
[...]
Note that a given version of glibc offers an ascending compatibility and can be used by programs requiring a lower version:
Code: Select all
strings /usr/lib/x86_64-linux-gnu/libc.so.6|grep GLIBC_
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_2.18
GLIBC_2.22
GLIBC_2.23
GLIBC_2.24
GLIBC_2.25
GLIBC_2.26
GLIBC_2.27
GLIBC_2.28
GLIBC_2.29
GLIBC_2.30
GLIBC_2.31
GLIBC_2.32
GLIBC_2.33
GLIBC_2.34
GLIBC_2.35
GLIBC_PRIVATE
So, the idea would be to install glibc 2.38 to be able to use programs requiring it, without breaking the system.
A possibility would be:
- download glibc, https://ftp.gnu.org/gnu/glibc/glibc-2.38.tar.gz
- compile it, and install it in another place that the original glibc:
Code: Select all
# unpackage
tar -xzvf glibc-2.38.tar.gz
mkdir eag
mkdir /opt/glibc-2.38
cd eag
../configure --prefix=/opt/glibc-2.38
make
# If you are sure you compiled correctly, then install
sudo make install
We need now to have the system know that glibc 2.38 is installed.
In "etc/ld.so.conf.d" we create a "extralibs.conf" file; this file just contains the path to the directory where the new glibc is installed, "/opt/glibc2.38" (without quotes).
Then,
sudo ldconfig
updates the system with the path of the new library.Theoretically, at next boot, "ldd --version" would say "2.38", programs requiring "libc.so.6" 2.38 would work, and programs requiring "libc.so.6" 2.35 would still work because "libc.so.6" 2.35 is still there, and/or because "libc.so.6" 2.38 offers an ascending compatibility.
All this is theoretical, and I might test it (after a complete system backup). My questions: does anybody have tested this or a similar approach to upgrade glibc? Does it seem reasonable, with some chances to work?
Regards,
MN