123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <sect1 id="ch06-coreutils" xreflabel="Coreutils">
- <title>Installing Coreutils-&coreutils-version;</title>
- <?dbhtml filename="coreutils.html" dir="chapter06"?>
- <para>The Coreutils package contains utilities for showing and setting the
- basic system characteristics.</para>
- <screen>&buildtime; &coreutils-time;
- &diskspace; &coreutils-compsize;</screen>
- &aa-coreutils-down;
- &aa-coreutils-dep;
- <sect2><title> </title><para> </para></sect2>
- <sect2>
- <title>Installation of Coreutils</title>
- <para>Apply the same "Posixver" patch we used previously:</para>
- <screen><userinput>patch -Np1 -i ../&coreutils-posixver-patch;</userinput></screen>
- <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/{date,echo,false,head,install,ln,ls} /bin
- mv /usr/bin/{mkdir,mknod,mv,pwd,rm,rmdir,sync} /bin
- mv /usr/bin/{sleep,stty,su,test,touch,true,uname} /bin
- mv /usr/bin/chroot /usr/sbin</userinput></screen>
- <para>We'll be using the <filename>kill</filename> program from the Procps
- package (installed as <filename>/bin/kill</filename> later in the chapter).
- Remove the one installed by Coreutils:</para>
- <screen><userinput>rm /usr/bin/kill</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>
- &aa-coreutils-shortdesc;
- &aa-coreutils-desc;
- </sect1>
|