diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml
index 4764a728d..13865692e 100644
--- a/chapter01/changelog.xml
+++ b/chapter01/changelog.xml
@@ -40,6 +40,98 @@
appropriate for the entry or if needed the entire day's listitem.
-->
+
+ 2025-01-15
+
+
+ [bdubbs] - Update to vim-9.1.1016. Addresses
+ #4500.
+
+
+ [bdubbs] - Update to iana-etc-20250108. Addresses
+ #5006.
+
+
+ [bdubbs] - Update to util-linux-2.40.4. Fixes
+ #5624.
+
+
+ [bdubbs] - Update to sysvinit-3.13. Fixes
+ #5621.
+
+
+ [bdubbs] - Update to sysklogd-2.7.0. Fixes
+ #5623.
+
+
+ [bdubbs] - Update to shadow-4.17.2. Fixes
+ #5625.
+
+
+ [bdubbs] - Update to setuptools-75.8.0. Fixes
+ #5622.
+
+
+ [bdubbs] - Update to linux-6.12.9. Fixes
+ #5620.
+
+
+ [bdubbs] - Update to gettext-0.23.1. Fixes
+ #5619.
+
+
+
+
+
+ 2025-01-01
+
+
+ [renodr] - Update to libxcrypt-4.4.37. Fixes
+ #5618.
+
+
+ [renodr] - Update to dbus-1.16.0. Fixes
+ #5609.
+
+
+ [bdubbs] - Update to iana-etc-20241220. Addresses
+ #5006.
+
+
+ [bdubbs] - Update to texinfo-7.2. Fixes
+ #5616.
+
+
+ [bdubbs] - Update to sysvinit-3.12. Fixes
+ #5615.
+
+
+ [bdubbs] - Update to shadow-4.17.1. Fixes
+ #5617.
+
+
+ [bdubbs] - Update to procps-ng-4.0.5. Fixes
+ #5611.
+
+
+ [bdubbs] - Update to meson-1.6.1. Fixes
+ #5610.
+
+
+ [bdubbs] - Update to linux-6.12.7. Fixes
+ #5613.
+
+
+ [bdubbs] - Update to kbd-2.7.1. Fixes
+ #5608.
+
+
+ [bdubbs] - Update to jinja2-3.1.5 (Security Update). Fixes
+ #5614.
+
+
+
+
2024-12-15
@@ -56,7 +148,7 @@
#5559.
- [bdubbs] - Update to Python-3.13.1. Fixes
+ [bdubbs] - Update to Python-3.13.1 (Security Update). Fixes
#5605.
diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml
index aa8d41543..269fd8ab7 100644
--- a/chapter01/whatsnew.xml
+++ b/chapter01/whatsnew.xml
@@ -62,9 +62,9 @@
-
+
@@ -134,9 +134,9 @@
IPRoute2-&iproute2-version;
-
+
Kbd-&kbd-version;
@@ -164,6 +164,9 @@
Libtool-&libtool-version;
+
+ Libxcrypt-&libxcrypt-version;
+ Linux-&linux-version;
@@ -212,9 +215,9 @@
-
+
@@ -230,9 +233,9 @@
Setuptools-&setuptools-version;
-
+
Sysklogd-&sysklogd-version;
@@ -257,9 +260,9 @@
Udev from Systemd-&systemd-version;
-
+
Vim-&vim-version;
diff --git a/chapter02/aboutlfs.xml b/chapter02/aboutlfs.xml
index 4f3f6ba46..4eba82366 100644
--- a/chapter02/aboutlfs.xml
+++ b/chapter02/aboutlfs.xml
@@ -8,7 +8,7 @@
- Setting The $LFS Variable
+ Setting the $LFS Variable and the UmaskThroughout this book, the environment variable LFS will
be used several times. You should ensure that this variable is always defined
@@ -28,8 +28,24 @@
/mnt/lfs (or whatever value the variable was set to) when it
processes the command line.
+ Now set the file mode creation mask (umask) to
+ 022 in case the host distro uses a different
+ default:
+
+umask 022
+
+ Setting the umask to 022 ensures that newly created files and
+ directories are only writable by their owner, but are readable and
+ searchable (only for directories) by anyone (assuming default modes are
+ used by the open(2) system
+ call, new files will end up with permission mode 644 and directories with
+ mode 755). An overly-permissive default can leave security holes in the
+ LFS system, and an overly-restrictive default can cause strange issues
+ building or using the LFS system.
+
- Do not forget to check that LFS is set whenever
+ Do not forget to check that LFS is set and the
+ umask is set to 022 whenever
you leave and reenter the current working environment (such as when doing a
su to root or
another user). Check that the LFS variable is set up
@@ -39,29 +55,40 @@
Make sure the output shows the path to your LFS system's build
location, which is /mnt/lfs if the
- provided example was followed. If the output is incorrect, use the command
- given earlier on this page to set $LFS to the correct
- directory name.
-
+ provided example was followed.
- One way to ensure that the LFS variable is always
- set is to edit the .bash_profile file in both your
- personal home directory and in /root/.bash_profile and
- enter the export command above. In addition, the shell specified in the
+ Check that the umask is set up properly with:
+
+ umask
+
+ The output may be 0022 or
+ 022 (the number of leading zeros depends
+ on the host distro).
+
+ If any output of these two commands is incorrect, use the command
+ given earlier on this page to set $LFS to the correct
+ directory name and set umask to 022.
+
+ One way to ensure that the LFS variable and the
+ umask are always set properly is to edit the
+ .bash_profile file in both your personal home
+ directory and in /root/.bash_profile and
+ enter the export and umask commands
+ above. In addition, the shell specified in the
/etc/passwd file for all users that need the
LFS variable must be bash to ensure that the
- /root/.bash_profile file is incorporated as a part of
+ .bash_profile file is incorporated as a part of
the login process.Another consideration is the method that is used to log into the
host system. If logging in through a graphical display manager, the
user's .bash_profile is not normally used when
- a virtual terminal is started. In this case, add the export command to
+ a virtual terminal is started. In this case, add the commands to
the .bashrc file for the user and
root. In addition,
some distributions use an "if" test, and do not run the remaining .bashrc
instructions for a non-interactive bash invocation. Be sure to place the
- export command ahead of the test for non-interactive use.
+ commands ahead of the test for non-interactive use.
diff --git a/chapter02/mounting.xml b/chapter02/mounting.xml
index 4db0f5bfc..244a3196b 100644
--- a/chapter02/mounting.xml
+++ b/chapter02/mounting.xml
@@ -42,6 +42,15 @@ mount -v -t ext4 /dev/<yyy> $LFS/home<yyy> with the appropriate partition
names.
+ Set the owner and permission mode of the
+ $LFS directory (i.e. the root
+ directory in the newly created file system for the LFS system) to
+ &root; and 755 in case the host distro has been
+ configured to use a different default for mkfs:
+
+chown root:root $LFS
+chmod 755 $LFS
+
Ensure that this new partition is not mounted with permissions that are
too restrictive (such as the or
options). Run the mount command
diff --git a/chapter04/addinguser.xml b/chapter04/addinguser.xml
index fa1cbafc0..28be6b9ad 100644
--- a/chapter04/addinguser.xml
+++ b/chapter04/addinguser.xml
@@ -20,8 +20,8 @@
the installation process. As root,
issue the following commands to add the new user:
-groupadd lfs
-useradd -s /bin/bash -g lfs -m -k /dev/null lfs
+groupadd &lfs-groupname;
+useradd -s /bin/bash -g &lfs-groupname; -m -k /dev/null &lfs-username;This is what the command line options mean:
@@ -74,13 +74,13 @@ useradd -s /bin/bash -g lfs -m -k /dev/null lfs
have a password), you need to set a password for &lfs-user;. Issue the
following command as the &root; user to set the password:
-passwd lfs
+passwd &lfs-username;Grant lfs full access to
all the directories under $LFS by making
lfs the owner:
-chown -v lfs $LFS/{usr{,/*},lib,lib64,var,etc,bin,sbin,tools}
+chown -v &lfs-username; $LFS/{usr{,/*},lib,lib64,var,etc,bin,sbin,tools}In some host systems, the following su command does not complete
properly and suspends the login for the &lfs-user; user to the background.
@@ -91,7 +91,7 @@ useradd -s /bin/bash -g lfs -m -k /dev/null lfs
logging in as &lfs-user; on a virtual console, or with the following
substitute/switch user command:
-su - lfs
+su - &lfs-username;The - instructs
su to start a login shell as opposed to a non-login shell.
diff --git a/chapter04/settingenviron.xml b/chapter04/settingenviron.xml
index b179bb0b3..564e29d84 100644
--- a/chapter04/settingenviron.xml
+++ b/chapter04/settingenviron.xml
@@ -76,11 +76,8 @@ EOF
umask 022
- Setting the user file-creation mask (umask) to 022 ensures that newly
- created files and directories are only writable by their owner, but are
- readable and executable by anyone (assuming default modes are used by the
- open(2) system call, new files
- will end up with permission mode 644 and directories with mode 755).
+ Setting the umask as we've already explained in
+
diff --git a/chapter07/changingowner.xml b/chapter07/changingowner.xml
index 4c83f40f6..8997d91f0 100644
--- a/chapter07/changingowner.xml
+++ b/chapter07/changingowner.xml
@@ -33,6 +33,6 @@
user root by running the following
command:
-chown --from lfs -R root:root $LFS/{usr,lib,lib64,var,etc,bin,sbin,tools}
+chown --from &lfs-username; -R root:root $LFS/{usr,lib,lib64,var,etc,bin,sbin,tools}
diff --git a/chapter08/dbus.xml b/chapter08/dbus.xml
index 36d5c55ca..086b30b93 100644
--- a/chapter08/dbus.xml
+++ b/chapter08/dbus.xml
@@ -48,41 +48,21 @@
Prepare D-Bus for compilation:
-./configure --prefix=/usr \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --runstatedir=/run \
- --enable-user-session \
- --disable-static \
- --disable-doxygen-docs \
- --disable-xml-docs \
- --docdir=/usr/share/doc/dbus-&dbus-version; \
- --with-system-socket=/run/dbus/system_bus_socket
+mkdir build
+cd build
+
+meson setup --prefix=/usr --buildtype=release --wrap-mode=nofallback ..
- The meaning of the configure options:
+ The meaning of the meson options:
- --runstatedir=/run and
- --with-system-socket=/run/dbus/system_bus_socket
+ --wrap-mode=nofallback
- These cause the PID file and the system bus socket
- to be in /run, instead of
- the deprecated /var/run.
-
-
-
-
-
- --enable-user-session
-
-
- This ensures the D-Bus per-user service and socket unit
- files are installed for Systemd. They are not useful (but
- harmless) in a base LFS installation, however they can be used
- once systemd is rebuilt with PAM support in BLFS.
+ This switch prevents meson from attempting to download a copy
+ of the Glib package for the tests.
@@ -90,11 +70,11 @@
Compile the package:
-make
+ninjaTo test the results, issue:
-make check
+ninja testMany tests are disabled because they require additional
packages that are not included in LFS. Instructions for running the
@@ -103,7 +83,7 @@
Install the package:
-make install
+ninja installCreate a symlink so that D-Bus and systemd can use the same
machine-id file:
@@ -149,7 +129,7 @@
dbus-daemon
- Is the D-Bus message bus daemon
+ is the D-Bus message bus daemondbus-daemon
@@ -159,7 +139,7 @@
dbus-launch
- Starts dbus-daemon from a shell
+ starts dbus-daemon from a shell
scriptdbus-launch
@@ -170,7 +150,7 @@
dbus-monitor
- Monitors messages passing through a D-Bus message bus
+ monitors messages passing through a D-Bus message busdbus-monitor
@@ -180,7 +160,7 @@
dbus-run-session
- Starts a session bus instance of dbus-daemon
+ starts a session bus instance of dbus-daemon
from a shell script and starts a specified program in that
session
@@ -192,7 +172,7 @@
dbus-send
- Sends a message to a D-Bus message bus
+ sends a message to a D-Bus message busdbus-send
@@ -202,7 +182,7 @@
dbus-test-tool
- Is a tool to help packages test
+ is a tool to help packages test
D-Busdbus-test-tool
@@ -214,7 +194,7 @@
dbus-update-activation-environment
- Updates environment variables that will be set for
+ updates environment variables that will be set for
D-Bus session servicesdbus-update-activation-environment
diff --git a/chapter08/flit-core.xml b/chapter08/flit-core.xml
index 419efc30f..55be940d4 100644
--- a/chapter08/flit-core.xml
+++ b/chapter08/flit-core.xml
@@ -42,11 +42,11 @@
Build the package:
-pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWDInstall the package:
-pip3 install --no-index --no-user --find-links dist flit_core
+pip3 install --no-index --find-links dist flit_coreThe meaning of the pip3 configuration options and commands:
diff --git a/chapter08/gettext.xml b/chapter08/gettext.xml
index d8fbc8f20..c0829253a 100644
--- a/chapter08/gettext.xml
+++ b/chapter08/gettext.xml
@@ -42,7 +42,7 @@
Installation of Gettext
-
+
Prepare Gettext for compilation:./configure --prefix=/usr \
diff --git a/chapter08/glibc.xml b/chapter08/glibc.xml
index deed9f044..3f499033a 100644
--- a/chapter08/glibc.xml
+++ b/chapter08/glibc.xml
@@ -496,7 +496,7 @@ done
cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO
zic -d $ZONEINFO -p America/New_York
-unset ZONEINFO
+unset ZONEINFO tz
The meaning of the zic commands:
diff --git a/chapter08/jinja2.xml b/chapter08/jinja2.xml
index c06da9139..0ddbf5ef5 100644
--- a/chapter08/jinja2.xml
+++ b/chapter08/jinja2.xml
@@ -42,11 +42,11 @@
Build the package:
-pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWD
+pip3 wheel -w dist --no-cache-dir --no-build-isolation --no-deps $PWDInstall the package:
-pip3 install --no-index --no-user --find-links dist Jinja2
+pip3 install --no-index --find-links dist Jinja2
diff --git a/chapter08/libtool.xml b/chapter08/libtool.xml
index cb550b5d6..be88fa169 100644
--- a/chapter08/libtool.xml
+++ b/chapter08/libtool.xml
@@ -52,13 +52,7 @@
To test the results, issue:
-make -k check
-
- Five tests are known to fail in the LFS build environment due
- to a circular dependency, but these tests pass if rechecked after
- automake has been installed. Additionally, with grep-3.8 or newer,
- two tests will trigger a warning for non-POSIX regular expressions and
- fail.
+make checkInstall the package:
diff --git a/chapter08/markupsafe.xml b/chapter08/markupsafe.xml
index 685b7b520..232cb317b 100644
--- a/chapter08/markupsafe.xml
+++ b/chapter08/markupsafe.xml
@@ -48,7 +48,7 @@
Install the package:
-pip3 install --no-index --no-user --find-links dist Markupsafe
+pip3 install --no-index --find-links dist Markupsafe
diff --git a/chapter08/procps.xml b/chapter08/procps.xml
index 8a4716ade..399d0cec7 100644
--- a/chapter08/procps.xml
+++ b/chapter08/procps.xml
@@ -67,8 +67,7 @@
Compile the package:
-make
-make src_w_LDADD='$(LDADD) -lsystemd'
+make
-
+
-
+
-
+
+
-
+
-
+
-
+
-
+
diff --git a/patches.ent b/patches.ent
index d35342106..d89ef444c 100644
--- a/patches.ent
+++ b/patches.ent
@@ -45,7 +45,7 @@
-->
-
+