coreutils.xml 3.5 KB

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