From 343ab1388a38dc622766a4a43e02c63e30096fe2 Mon Sep 17 00:00:00 2001 From: Xi Ruoyao Date: Fri, 2 Feb 2024 05:15:03 +0800 Subject: [PATCH] Add info about how to upgrade Glibc on a running system Let's change our policy to match other "rolling release" distros and ease the procedure to fix Glibc security vulnerabilities. Squashed the commits in xry111/update-glibc branch to keep the history clean. Co-Authored-By: Pierre Labastie Co-Authored-By: Douglas R. Reno --- chapter08/glibc.xml | 115 +++++++++++++++++++++++++++++++++++++++++++ chapter08/pkgmgt.xml | 18 ++----- 2 files changed, 118 insertions(+), 15 deletions(-) diff --git a/chapter08/glibc.xml b/chapter08/glibc.xml index 86b830249..e09fe4900 100644 --- a/chapter08/glibc.xml +++ b/chapter08/glibc.xml @@ -201,6 +201,121 @@ esac sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile + + + If upgrading Glibc to a new minor version (for example, from + Glibc-2.36 to Glibc-&glibc-version;) on a running LFS system, you + need to take some extra precautions to avoid breaking the system: + + + + + + + Upgrading Glibc on a LFS system prior to 11.0 (exclusive) is + not supported. Rebuild LFS if you are running such an old LFS + system but you need a newer Glibc. + + + + + + + If upgrading on a LFS system prior to 12.0 (exclusive), install + Libxcrypt following + In addition to + a normal Libxcrypt installation, + you MUST follow the note in Libxcrypt + section to install + libcrypt.so.1* + (overwritting + libcrypt.so.1 from the + prior Glibc installation). + + + + + + + If upgrading on a LFS system prior to 12.1 (exclusive), + remove the nscd program: + + + rm -f /usr/sbin/nscd + + + If this system (prior to LFS 12.1, exclusive) is based on + Systemd, it's also needed to disable and stop the + nscd service now: + + + systemctl disable --now nscd + + + + + Upgrade the kernel and reboot if it's older than &min-kernel; + (check the current version with uname -r) + or if you want to upgrade it anyway, following + + + + + + + Upgrade the kernel API headers if it's older than &min-kernel; + (check the current version with + cat /usr/include/linux/version.h) + or if you want to upgrade it anyway, following + (but removing + $LFS from the cp command). + + + + + + + Perform a DESTDIR installation and upgrade + the Glibc shared libraries on the system using one single + install command: + + + make DESTDIR=$PWD/dest install +install -vm755 dest/usr/lib/*.so.* /usr/lib + + + + + It's imperative to strictly follow these steps above unless you + completely understand what you are doing. + Any unexpected deviation may render the + system completely unusable. YOU ARE WARNED. + + + + Then continue to run the make install command + and the sed command against + /usr/bin/ldd. Once they are finished, reboot + the system immediately. + + + Install the package: make install diff --git a/chapter08/pkgmgt.xml b/chapter08/pkgmgt.xml index 4c7bb6dd7..10ec5d199 100644 --- a/chapter08/pkgmgt.xml +++ b/chapter08/pkgmgt.xml @@ -63,21 +63,9 @@ If Glibc needs to be upgraded to a newer - version, (e.g., from Glibc-2.31 to Glibc-2.32), it is safer to - rebuild LFS. Though you may be able to rebuild - all the packages in their dependency order, we do not recommend - it. - - - - Reinstalling the same version of Glibc (&glibc-version; for - this release of LFS) with patches should be safe when these patches - do not change ABI and API. When a security vulnerability is found - in Glibc, we often need to apply such a patch to fix the - vulnerability and reinstall Glibc. Consult - LFS security - advisories if you are alerted for a published Glibc security - vulnerability but unsure about the action to take. + version, (e.g., from Glibc-2.36 to Glibc-&glibc-version;), + some extra steps are needed to avoid breaking the system. + Read for details. If a package containing a shared library is updated, and