diff --git a/appendices/dependencies.xml b/appendices/dependencies.xml
index 697d0d1d7..a1efa3d01 100644
--- a/appendices/dependencies.xml
+++ b/appendices/dependencies.xml
@@ -387,7 +387,7 @@
&before;
- File
+ File and Libelf
@@ -1685,14 +1685,15 @@
&dependencies;
- Bash, Binutils, Coreutils, GCC, Glibc, and Make
+ Bash, Binutils, Bzip2, Coreutils, GCC, Glibc, Make, Xz,
+ Zlib, and Zstd
&runtime;
- Glibc and Zlib
+ Bzip2, Glibc, Xz, Zlib, and Zstd
@@ -3205,7 +3206,7 @@
&before;
Eudev, File, GRUB, Kmod,
- and Man-DBand Man-DB, and Systemd
@@ -3244,7 +3245,7 @@
&before;
- File, Kmod, Perl, and Util-linux
+ File, Kmod, Libelf, Perl, and Util-linux
@@ -3282,7 +3283,8 @@
&before;
- GCC and Systemd
+ GCC and Libelf
+ GCC, Libelf, and Systemd
diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml
index d9d2b1558..20cf06f58 100644
--- a/chapter01/changelog.xml
+++ b/chapter01/changelog.xml
@@ -39,6 +39,47 @@
or as
appropriate for the entry or if needed the entire day's listitem.
-->
+
+ 2023-03-04
+
+
+ [xry111] - Update to systemd-253. Fixes
+ #5206.
+
+
+ [xry111] - Update to bc-6.3.1. Fixes
+ #5217.
+
+
+ [xry111] - Update to linux-6.2.2 (security fixes). Fixes
+ #5218.
+
+
+ [xry111] - Update to procps-ng-4.0.3. Fixes
+ #5220.
+
+
+ [xry111] - Update to iproute2-6.2.0. Fixes
+ #5221.
+
+
+ [xry111] - Update to meson-1.0.1. Fixes
+ #5222.
+
+
+ [xry111] - Update to make-4.4.1. Fixes
+ #5223.
+
+
+ [xry111] - Update to libelf-0.189. Fixes
+ #5224.
+
+
+ [bdubbs] - Change to a better host requirements script in Chapter 2.
+
+
+
+
2023-03-01
diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml
index bf69cb08f..21722a863 100644
--- a/chapter01/whatsnew.xml
+++ b/chapter01/whatsnew.xml
@@ -46,15 +46,15 @@
-
+
Bc &bc-version;
-
+
@@ -70,57 +70,57 @@
-
+
+
+
-
+
-
+
-
+
-
+
+
-
+
@@ -130,12 +130,12 @@
-
+
+
@@ -151,21 +151,21 @@
-
+
-
+
Libelf-&elfutils-version; (from elfutils)
-
+
@@ -181,33 +181,33 @@
Make-&make-version;
-
+
+
+
Meson-&meson-version;
-
+
+
+
+
+
@@ -220,63 +220,63 @@
Procps-ng-&procps-ng-version;
-
+
+
+
+
+
Systemd-&systemd-version;
-
+
-
+
+
+
-
+
+
-
+
+
+
-
+
-
+
-
+
@@ -310,7 +310,7 @@
- zstd-1.5.2-upstream_fixes-1.patch
+ systemd-252-security_fix-1.patch
diff --git a/chapter02/hostreqs.xml b/chapter02/hostreqs.xml
index 52ccc97ed..6c74986a0 100644
--- a/chapter02/hostreqs.xml
+++ b/chapter02/hostreqs.xml
@@ -55,7 +55,7 @@
- Coreutils-6.9
+ Coreutils-7.0
@@ -166,77 +166,89 @@
cat > version-check.sh << "EOF"
#!/bin/bash
-# Simple script to list version numbers of critical development tools
-export LC_ALL=C
-bash --version | head -n1 | cut -d" " -f2-4
-MYSH=$(readlink -f /bin/sh)
-echo "/bin/sh -> $MYSH"
-echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash"
-unset MYSH
+# A script to list version numbers of critical development tools
-echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
-bison --version | head -n1
+# If you have tools installed in other directories, adjust PATH here AND
+# in ~lfs/.bashrc (section 4.4) as well.
-if [ -h /usr/bin/yacc ]; then
- echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
-elif [ -x /usr/bin/yacc ]; then
- echo yacc is `/usr/bin/yacc --version | head -n1`
-else
- echo "yacc not found"
-fi
+LC_ALL=C
+PATH=/usr/bin:/bin
-echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
-diff --version | head -n1
-find --version | head -n1
-gawk --version | head -n1
+bail() { echo "FATAL: $1"; exit 1; }
+grep --version > /dev/null 2> /dev/null || bail "grep does not work"
+sed '' /dev/null || bail "sed does not work"
+sort /dev/null || bail "sort does not work"
-if [ -h /usr/bin/awk ]; then
- echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
-elif [ -x /usr/bin/awk ]; then
- echo awk is `/usr/bin/awk --version | head -n1`
-else
- echo "awk not found"
-fi
+ver_check()
+{
+ if ! type -p $2 &>/dev/null
+ then
+ echo "ERROR: Cannot find $2 ($1)"; return 1;
+ fi
+ v=$($2 --version 2>&1 | grep -E -o '[0-9]+\.[0-9\.]+[a-z]*' | head -n1)
+ if printf '%s\n' $3 $v | sort --version-sort --check &>/dev/null
+ then
+ printf "OK: %-9s %-6s >= $3\n" "$1" "$v"; return 0;
+ else
+ printf "ERROR: %-9s is TOO OLD ($3 or later required)\n" "$1";
+ return 1;
+ fi
+}
-gcc --version | head -n1
-g++ --version | head -n1
-grep --version | head -n1
-gzip --version | head -n1
-cat /proc/version
-m4 --version | head -n1
-make --version | head -n1
-patch --version | head -n1
-echo Perl `perl -V:version`
-python3 --version
-sed --version | head -n1
-tar --version | head -n1
-makeinfo --version | head -n1 # texinfo version
-xz --version | head -n1
+ver_kernel()
+{
+ kver=$(uname -r | grep -E -o '[0-9\.]+')
+ if printf '%s\n' $1 $kver | sort --version-sort --check &>/dev/null
+ then
+ printf "OK: Linux Kernel $kver >= $1\n"; return 0;
+ else
+ printf "ERROR: Linux Kernel ($kver) is TOO OLD ($1 or later required)\n" "$kver";
+ return 1;
+ fi
+}
-echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c
-if [ -x dummy ]
- then echo "g++ compilation OK";
- else echo "g++ compilation failed"; fi
-rm -f dummy.c dummy
+# Coreutils first because-sort needs Coreutils >= 7.0
+ver_check Coreutils sort 7.0 || bail "--version-sort unsupported"
+ver_check Bash bash 3.2
+ver_check Binutils ld 2.13.1
+ver_check Bison bison 2.7
+ver_check Diffutils diff 2.8.1
+ver_check Findutils find 4.2.31
+ver_check Gawk gawk 4.0.1
+ver_check GCC gcc 5.1
+ver_check "GCC (C++)" g++ 5.1
+ver_check Grep grep 2.5.1a
+ver_check Gzip gzip 1.3.12
+ver_check M4 m4 1.4.10
+ver_check Make make 4.0
+ver_check Patch patch 2.5.4
+ver_check Perl perl 5.8.8
+ver_check Python python3 3.4
+ver_check Sed sed 4.1.5
+ver_check Tar tar 1.22
+ver_check Texinfo texi2any 4.7
+ver_check Xz xz 5.0.0
+#ver_check "Linux Kernel" "" 3.2 'cat /proc/version'
+ver_kernel 3.2
+
+alias_check() {
+ if $1 --version 2>&1 | grep -qi $2
+ then printf "OK: %-4s is $2\n" "$1";
+ else printf "ERROR: %-4s is NOT $2\n" "$1"; fi
+}
+echo "Aliases:"
+alias_check awk GNU
+alias_check yacc Bison
+alias_check sh Bash
+
+echo "Compiler check:"
+if printf "int main(){}" | g++ -x c++ -
+then echo "OK: g++ works";
+else echo "ERROR: g++ does NOT work"; fi
+rm -f a.out
EOF
bash version-check.sh
-
diff --git a/chapter03/patches.xml b/chapter03/patches.xml
index 44367898f..5f1bbf0c2 100644
--- a/chapter03/patches.xml
+++ b/chapter03/patches.xml
@@ -143,7 +143,7 @@
-
+
To test the results, issue:
-make check
+chown -Rv tester .
+su tester -c "PATH=$PATH make check"
Install the package:
diff --git a/chapter08/systemd.xml b/chapter08/systemd.xml
index 5b1fc1fe5..fcac04602 100644
--- a/chapter08/systemd.xml
+++ b/chapter08/systemd.xml
@@ -40,12 +40,6 @@
Installation of systemd
-
- First, fix a security issue in systemd-coredump:
-
-patch -Np1 -i ../&systemd-upstream-patch;
-
-
Remove two unneeded groups,
render and
sgx, from the default udev
@@ -229,7 +223,7 @@ meson --prefix=/usr \
machinectl, networkctl, oomctl, portablectl, poweroff (symlink to
systemctl), reboot (symlink to systemctl), resolvconf (symlink to
resolvectl), resolvectl, runlevel (symlink to systemctl), shutdown
- (symlink to systemctl), systemctl, systemd-analyze,
+ (symlink to systemctl), systemctl, systemd-ac-power, systemd-analyze,
systemd-ask-password, systemd-cat, systemd-cgls, systemd-cgtop,
systemd-creds, systemd-delta, systemd-detect-virt,
systemd-dissect, systemd-escape, systemd-hwdb, systemd-id128,
@@ -482,6 +476,17 @@ meson --prefix=/usr \
+
+ systemd-ac-power
+
+ Reports whether the system is connected to an external
+ power source.
+
+ systemd-ac-power
+
+
+
+
systemd-analyze
diff --git a/general.ent b/general.ent
index 4afd37725..08583c3f3 100644
--- a/general.ent
+++ b/general.ent
@@ -7,10 +7,10 @@
-
-
+
+
-
+
diff --git a/packages.ent b/packages.ent
index 6889f1432..ce26b0be5 100644
--- a/packages.ent
+++ b/packages.ent
@@ -58,10 +58,10 @@
-
-
+
+
-
+
@@ -148,10 +148,10 @@
-
-
+
+
-
+
@@ -342,10 +342,10 @@
-
-
+
+
-
+
@@ -423,13 +423,13 @@
-
-
+
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
diff --git a/patches.ent b/patches.ent
index c381cd0a8..7c0009583 100644
--- a/patches.ent
+++ b/patches.ent
@@ -89,11 +89,11 @@
-
+