Ubuntu LTS od 10 lat używa testowej wersji kompilatora gcc. Wersje testowe wydane pomiędzy wersjami LTS mają tylko stabilne. Fuck logic. Biorąc np. świeże wydanie LTS macie wrzucone jak domyślne wersje stabilną, ale pół systemu chodzi na wersji testowej, np. używając mechanizmu dkms do kompilacji zewnętrznych sterowników używają one wersji testowej i przez mogą nie działać. Dodatkowo opiekun pakietów z kompilatorem który robi to od 30 lat zostawia opcje debugowania kompilatora, zamiast zajmować 250MB zajmuje 760MB. Jak np. używacie steama to się wam to podwaja. Teraz jest dobry przykład w nadchodzącej wersji LTS. Jest:
root@ubuntu2604:~# apt-get install gcc-15
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Solving dependencies... Done
The following additional packages will be installed:
binutils binutils-common binutils-x86-64-linux-gnu cpp-15 cpp-15-x86-64-linux-gnu gcc-15-x86-64-linux-gnu libasan8 libbinutils libc-dev-bin libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libgcc-15-dev libgomp1 libgprofng0
libhwasan0 libisl23 libitm1 libjansson4 liblsan0 libmpc3 libmpfr6 libquadmath0 libsframe3 libtsan2 libubsan1 linux-libc-dev manpages manpages-dev rpcsvc-proto
Suggested packages:
binutils-doc gprofng-gui binutils-gold gcc-15-locales cpp-15-doc gcc-15-multilib gcc-15-doc libc-devtools glibc-doc man-browser
The following NEW packages will be installed:
binutils binutils-common binutils-x86-64-linux-gnu cpp-15 cpp-15-x86-64-linux-gnu gcc-15 gcc-15-x86-64-linux-gnu libasan8 libbinutils libc-dev-bin libc6-dev libcc1-0 libcrypt-dev libctf-nobfd0 libctf0 libgcc-15-dev libgomp1 libgprofng0
libhwasan0 libisl23 libitm1 libjansson4 liblsan0 libmpc3 libmpfr6 libquadmath0 libsframe3 libtsan2 libubsan1 linux-libc-dev manpages manpages-dev rpcsvc-proto
0 upgraded, 33 newly installed, 0 to remove and 0 not upgraded.
Need to get 64.4 MB of archives.
After this operation, 217 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Będzie:
root@ubuntu2604:~# apt-get install gcc-16 -t resolute-proposed
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Solving dependencies... Done
The following additional packages will be installed:
binutils binutils-common binutils-x86-64-linux-gnu cpp-16 cpp-16-x86-64-linux-gnu gcc-16-base gcc-16-x86-64-linux-gnu libasan8 libatomic1 libbinutils libcc1-0 libctf-nobfd0 libctf0 libgcc-16-dev libgcc-s1 libgomp1 libgprofng0 libhwasan0
libisl23 libitm1 libjansson4 liblsan0 libmpc3 libmpfr6 libquadmath0 libsframe3 libtsan2 libubsan1
Suggested packages:
binutils-doc gprofng-gui binutils-gold gcc-16-locales cpp-16-doc gcc-16-multilib gcc-16-doc
Recommended packages:
libc6-dev
The following NEW packages will be installed:
binutils binutils-common binutils-x86-64-linux-gnu cpp-16 cpp-16-x86-64-linux-gnu gcc-16 gcc-16-base gcc-16-x86-64-linux-gnu libasan8 libbinutils libcc1-0 libctf-nobfd0 libctf0 libgcc-16-dev libgomp1 libgprofng0 libhwasan0 libisl23
libitm1 libjansson4 liblsan0 libmpc3 libmpfr6 libquadmath0 libsframe3 libtsan2 libubsan1
The following packages will be upgraded:
libatomic1 libgcc-s1
2 upgraded, 27 newly installed, 0 to remove and 66 not upgraded.
Need to get 227 MB of archives.
After this operation, 762 MB of additional disk space will be used.
Do you want to continue? [Y/n]
To najbardziej wkurwia przy budowaniu kontenerów, gdzie inne dystrybucje zajmują do 1GB, ubuntu zajmuje 3GB. A jak robimy system wbudowany większość mieści się na 4GB pamięci flash, do ubuntu trzeba 16GB. Oczywiście gcc aktualizują po drodze w wersji LTS jak ma to obecnie miejsce w 22.04 i 24.04. Tylko po co to robić?
W punkcie 1 i 3 chodzi o to, że im mniej rzeczy tym system bezpieczniejszy i stabilniejszy. Jak widać w ubuntu nie.