aboutsummaryrefslogtreecommitdiffstats
path: root/chapter06/coreutils.xml
diff options
context:
space:
mode:
Diffstat (limited to 'chapter06/coreutils.xml')
-rw-r--r--chapter06/coreutils.xml79
1 files changed, 78 insertions, 1 deletions
diff --git a/chapter06/coreutils.xml b/chapter06/coreutils.xml
index 1ee2c812d..7eeaa69a3 100644
--- a/chapter06/coreutils.xml
+++ b/chapter06/coreutils.xml
@@ -7,7 +7,84 @@ Estimated required disk space: &coreutils-compsize;</screen>
&aa-coreutils-shortdesc;
&aa-coreutils-dep;
-&c6-coreutils-inst;
+
+<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
+
+<sect2>
+<title>Installation of Coreutils</title>
+
+<para>Normally the functionality of <userinput>uname</userinput> is somewhat
+broken, in that the <userinput>-p</userinput> switch always returns "unknown".
+The following patch fixes this behaviour for Intel architectures:</para>
+
+<screen><userinput>patch -Np1 -i ../&coreutils-uname-patch;</userinput></screen>
+
+<para>We do not want Coreutils to install its version of the
+<userinput>hostname</userinput> program, because it is inferior to the version
+provided by Net-tools. Prevent its installation by applying a patch:</para>
+
+<screen><userinput>patch -Np1 -i ../&coreutils-hostname-patch;</userinput></screen>
+
+<para>Now prepare Coreutils for compilation:</para>
+
+<screen><userinput>./configure --prefix=/usr</userinput></screen>
+
+<para>Compile the package:</para>
+
+<screen><userinput>make</userinput></screen>
+
+<para>The <userinput>su</userinput> program from Coreutils wasn't installed in
+Chapter 5 because it needed <emphasis>root</emphasis> privilege to do so. We're
+going to need it in a few moments for the test suite. Therefore we work around
+the problem by installing it now:</para>
+
+<screen><userinput>make install-root</userinput></screen>
+
+<para>This package has a test suite available which can perform a number of
+checks to ensure it built correctly. However, this particular test suite
+makes some assumptions with regards to the presence of non-root users and
+groups that don't apply this early into the LFS build. We therefore create
+a dummy system user and two dummy groups to allow the tests to run
+properly. Should you choose not to run the test suite, skip down to
+"Install the package". The following commands will prepare us for the test
+suite. Create two dummy groups and a dummy user name:</para>
+
+<screen><userinput>echo "dummy1:x:1000" >> /etc/group
+echo "dummy2:x:1001:dummy" >> /etc/group
+echo "dummy:x:1000:1000:::/bin/bash" >> /etc/passwd</userinput></screen>
+
+<para>Some tests are meant to run as <emphasis>root</emphasis>:</para>
+
+<screen><userinput>make check-root</userinput></screen>
+
+<para>The remainder of the tests are run as the <emphasis>dummy</emphasis>
+user:</para>
+
+<screen><userinput>su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"</userinput></screen>
+
+<para>Remove the dummy groups and user name:</para>
+
+<screen><userinput>sed -i.bak '/dummy/d' /etc/passwd /etc/group</userinput></screen>
+
+<para>Install the package:</para>
+
+<screen><userinput>make install</userinput></screen>
+
+<para>And move some programs to their proper locations:</para>
+
+<screen><userinput>mv /usr/bin/{basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
+mv /usr/bin/{dir,dircolors,du,date,echo,false,head} /bin
+mv /usr/bin/{install,ln,ls,mkdir,mkfifo,mknod,mv,pwd} /bin
+mv /usr/bin/{rm,rmdir,shred,sync,sleep,stty,su,test} /bin
+mv /usr/bin/{touch,true,uname,vdir} /bin
+mv /usr/bin/chroot /usr/sbin</userinput></screen>
+
+<para>Finally, create a few necessary symlinks:</para>
+
+<screen><userinput>ln -s test /bin/[
+ln -s ../../bin/install /usr/bin</userinput></screen>
+
+</sect2>
</sect1>