coreutils.xml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <sect1 id="ch06-coreutils" xreflabel="Coreutils">
  2. <title>Installing Coreutils-&coreutils-version;</title>
  3. <?dbhtml filename="coreutils.html" dir="chapter06"?>
  4. <para>The Coreutils package contains utilities for showing and setting the
  5. basic system characteristics.</para>
  6. <screen>&buildtime; &coreutils-time;
  7. &diskspace; &coreutils-compsize;</screen>
  8. &aa-coreutils-down;
  9. &aa-coreutils-dep;
  10. <sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
  11. <sect2>
  12. <title>Installation of Coreutils</title>
  13. <para>Apply the same "Posixver" patch we used previously:</para>
  14. <screen><userinput>patch -Np1 -i ../&coreutils-posixver-patch;</userinput></screen>
  15. <para>Normally the functionality of <userinput>uname</userinput> is somewhat
  16. broken, in that the <userinput>-p</userinput> switch always returns "unknown".
  17. The following patch fixes this behaviour for Intel architectures:</para>
  18. <screen><userinput>patch -Np1 -i ../&coreutils-uname-patch;</userinput></screen>
  19. <para>We do not want Coreutils to install its version of the
  20. <userinput>hostname</userinput> program, because it is inferior to the version
  21. provided by Net-tools. Prevent its installation by applying a patch:</para>
  22. <screen><userinput>patch -Np1 -i ../&coreutils-hostname-patch;</userinput></screen>
  23. <para>Now prepare Coreutils for compilation:</para>
  24. <screen><userinput>./configure --prefix=/usr</userinput></screen>
  25. <para>Compile the package:</para>
  26. <screen><userinput>make</userinput></screen>
  27. <para>The <userinput>su</userinput> program from Coreutils wasn't installed in
  28. Chapter 5 because it needed <emphasis>root</emphasis> privilege to do so. We're
  29. going to need it in a few moments for the test suite. Therefore we work around
  30. the problem by installing it now:</para>
  31. <screen><userinput>make install-root</userinput></screen>
  32. <para>This package has a test suite available which can perform a number of
  33. checks to ensure it built correctly. However, this particular test suite
  34. makes some assumptions with regards to the presence of non-root users and
  35. groups that don't apply this early into the LFS build. We therefore create
  36. a dummy system user and two dummy groups to allow the tests to run
  37. properly. Should you choose not to run the test suite, skip down to
  38. "Install the package". The following commands will prepare us for the test
  39. suite. Create two dummy groups and a dummy user name:</para>
  40. <screen><userinput>echo "dummy1:x:1000" >> /etc/group
  41. echo "dummy2:x:1001:dummy" >> /etc/group
  42. echo "dummy:x:1000:1000:::/bin/bash" >> /etc/passwd</userinput></screen>
  43. <para>Some tests are meant to run as <emphasis>root</emphasis>:</para>
  44. <screen><userinput>make check-root</userinput></screen>
  45. <para>The remainder of the tests are run as the <emphasis>dummy</emphasis>
  46. user:</para>
  47. <screen><userinput>su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"</userinput></screen>
  48. <para>Remove the dummy groups and user name:</para>
  49. <screen><userinput>sed -i.bak '/dummy/d' /etc/passwd /etc/group</userinput></screen>
  50. <para>Install the package:</para>
  51. <screen><userinput>make install</userinput></screen>
  52. <para>And move some programs to their proper locations:</para>
  53. <screen><userinput>mv /usr/bin/{basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
  54. mv /usr/bin/{date,echo,false,head,install,ln,ls} /bin
  55. mv /usr/bin/{mkdir,mknod,mv,pwd,rm,rmdir,sync} /bin
  56. mv /usr/bin/{sleep,stty,su,test,touch,true,uname} /bin
  57. mv /usr/bin/chroot /usr/sbin</userinput></screen>
  58. <para>We'll be using the <filename>kill</filename> program from the Procps
  59. package (installed as <filename>/bin/kill</filename> later in the chapter).
  60. Remove the one installed by Coreutils:</para>
  61. <screen><userinput>rm /usr/bin/kill</userinput></screen>
  62. <para>Finally, create a few necessary symlinks:</para>
  63. <screen><userinput>ln -s test /bin/[
  64. ln -s ../../bin/install /usr/bin</userinput></screen>
  65. </sect2>
  66. &aa-coreutils-shortdesc;
  67. &aa-coreutils-desc;
  68. </sect1>