Re: LFS build of File-5.45 problem stops on compilation of seccomp.c
"Xi Ruoyao" ([email protected] via lfs-support Mailing List) <[email protected]> Fri, 21 Feb 2025 18:19:33 +0800
| Newsgroups | gmane.linux.lfs.support |
|---|---|
| Message-ID | <[email protected]> |
On Fri, 2025-02-21 at 11:11 +0100, Rainer Fiebig wrote: > Am 20.02.25 um 17:29 schrieb Xi Ruoyao ([email protected] via > lfs-support Mailing List): > > On Fri, 2025-02-21 at 00:22 +0800, Xi Ruoyao wrote: > > > On Thu, 2025-02-20 at 09:20 -0600, dave kohler wrote: > > > > attempt to open /mnt/lfs/lib/../lib/libseccomp.so succeeded > > > > > > So this means your symlink is indeed incorrect. The symlink > > > /mnt/lfs/lib should points to the relative path usr/lib, not the > > > absolute path /usr/lib. > > > > > > The mistake also caused the command > > > > > > chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools} > > > > > > to change your /usr/lib to be owned by LFS, triggering the warning from > > > Arch package manager you've mentioned in another thread. > > > > > > Now you need to fix your host distro before another attempt of LFS > > > build. First run "chown root /usr/lib /usr/bin" to fix the ownership. > > > > > > Then you need to check if there is any file/directory owned by the LFS > > > user in your /usr/lib and /usr/bin. For each one, figure out which Arch > > > package should provide that file or directory, then reinstall the Arch > > > package. If no Arch package should provide it, just remove it. > > > > > > After fixing Arch, start over building LFS and make sure typing correct > > > commands this time. > > > > > > I guess we should just remove $LFS/lib, $LFS/bin, and $LFS/sbin from the > > > chown command, so with an incorrect symlink the build will fail early at > > > Chapter 5 Glibc instead of silently breaking the host distro. I'll do > > > it after the 12.3 release. > > > > https://wiki.linuxfromscratch.org/lfs/ticket/5655 > > Maybe the problem is not the chown-statement but these two steps: > > > mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin} > > for i in bin lib sbin; do > ln -sv usr/$i $LFS/$i > done > > > While the mkdir-statement produces the intended results irrespective of > where it is issued, the for-loop only does so if the user is in > /mnt/lfs. If he happens to be in / of the host-system, the results are > what we have seen in this case, even if he copied/pasted the > instructions, as the OP claims to have done. No this is not true. Even if you are in /, the symlinks are still created with relative paths. This is a common misunderstanding about the ln command and the reason we have the infamous "the above command is correct" note in Chapter 5 Glibc. [Ironically, if you are in / and you've added the "-r" option for "relative", things will indeed go wrong. But we don't have -r here anyway and we never encouraged people to use it: I tried "grep -r 'ln.*-r'" in LFS and BLFS and there's no match.] And I can tell he didn't copied the instructions because in his environment there was CONFIG_SITE=/mnt/lfs/user/share/config.site Note that "usr" was typed as "user" and this cannot happen with copy-n- paste. > Maybe I have overlooked a line in the book (12.2) but it seems that the > instructions only _assume_ that the user is in $LFS when starting the > for-loop but don't make sure that he actually is. > > So, perhaps a cd $LFS after the mkdir-statement should be added to > ensure that the links are set correctly. -- Xi Ruoyao <[email protected]> School of Aerospace Science and Technology, Xidian University -- http://lists.linuxfromscratch.org/sympa/info/lfs-support Unsubscribe: See the above information page