coreutils.xml 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <sect1 id="ch-system-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 <command>uname</command> is somewhat
  16. broken, in that the <emphasis>-p</emphasis> 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. <command>hostname</command> 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 test suite of Coreutils makes several assumptions about the presence
  28. of files and users that aren't valid yet this early in the LFS build. We will
  29. therefore have to set up a few things before being able to run the tests. If
  30. you choose not to run these tests, skip down to "Install the package".</para>
  31. <para>To be able to run the full test suite, the <command>su</command> program
  32. needs to be installed. We didn't bother to install this little program in
  33. <xref linkend="chapter-temporary-tools"/> because it requires root privileges,
  34. so do it now:</para>
  35. <screen><userinput>make install-root</userinput></screen>
  36. <para>Create a 'table of mounted filesystems' file with:</para>
  37. <screen><userinput>touch /etc/mtab</userinput></screen>
  38. <para>And create two dummy groups and a dummy user name:</para>
  39. <screen><userinput>echo "dummy1:x:1000" &gt;&gt; /etc/group
  40. echo "dummy2:x:1001:dummy" &gt;&gt; /etc/group
  41. echo "dummy:x:1000:1000:::/bin/bash" &gt;&gt; /etc/passwd</userinput></screen>
  42. <para>Now you're all set to run the test suite. First run the few tests that
  43. are meant to be run as <emphasis>root</emphasis>:</para>
  44. <screen><userinput>make check-root</userinput></screen>
  45. <para>Then run the remainder of the tests as the <emphasis>dummy</emphasis>
  46. user:</para>
  47. <screen><userinput>su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"</userinput></screen>
  48. <para>When you're done testing, remove the dummy user and groups:</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 two symlinks to be FHS-compliant:</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>