Hi folks,
In chapter06/coreutils.html we state: "Move programs to the proper
locations:
mv /usr/bin/{[,basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
mv /usr/bin/{date,echo,false,head,hostname,install,ln} /bin
mv /usr/bin/{ls,mkdir,mknod,mv,pwd,rm,rmdir,sync} /bin
mv /usr/bin/{sleep,stty,test,touch,true,uname} /bin
mv /usr/bin/chroot /usr/sbin"
Firstly, I think we could expand on what we mean by "proper locations" -
i.e. what makes us use /bin instead of /usr/bin? I can think of 2
reasons: i) FHS and ii) Bootscript requirements for scripts run before
/usr is mounted
So, I think we could do with splitting those binary moves to make the 2
reasons clearer:
"Move programs to the locations specified by the FHS:
mv /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin
mv /usr/bin/{false,hostname,ln,ls,mkdir,mknod,mv,pwd,rm} /bin
mv /usr/bin/{rmdir,stty,sync,true,uname} /bin
Move programs that the bootscripts require to /bin:
mv /usr/bin/{head,sleep} /bin"
That then leaves us with the following binaries that I can't see a need
to move from /usr/bin:
[, basename, install, test, touch
Does anyone know why we do so? The movement of 'install' even forces us
to symlink it back to /usr/bin for so called FHS compliance. Searching
the FHS I can't see where it mandates the location of 'install'.
Now to get to the real crux of what caused all this in the first place!
The udev testsuite assumes that 'test' appears in /usr/bin, not in
'/bin', causing one of the tests to fail. I committed a change to the
book today that simply replaced /usr/bin/test with /bin/test, then sent
a query upstream.
Kay Sievers explained that udev uses execv() to invoke the PROGRAM
argument specified in its rules. This means that a 'real binary',
rather than the shell builtin, will be run. Additionally, it means that
$PATH won't be respected, so unfortunately just running 'test' won't
work. The ideal solution would be to figure out a way of getting the
test/udev-test.pl script to figure out whether it should call
/usr/bin/test or /bin/test. However, I'm only going to invest time in
this if someone can convince me of why we *need* to move 'test' and '['
to /bin.
Regards,
Matt.
--
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page