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