source: chapter06/coreutils.xml@ 31a5625f

10.0 10.0-rc1 10.1 10.1-rc1 11.0 11.0-rc1 11.0-rc2 11.0-rc3 11.1 11.1-rc1 11.2 11.2-rc1 11.3 11.3-rc1 12.0 12.0-rc1 12.1 12.1-rc1 12.2 12.2-rc1 6.0 6.1 6.1.1 6.3 6.4 6.5 6.6 6.7 6.8 7.0 7.1 7.2 7.3 7.4 7.5 7.5-systemd 7.6 7.6-systemd 7.7 7.7-systemd 7.8 7.8-systemd 7.9 7.9-systemd 8.0 8.1 8.2 8.3 8.4 9.0 9.1 arm bdubbs/gcc13 ml-11.0 multilib renodr/libudev-from-systemd s6-init trunk v5_1 v5_1_1 xry111/arm64 xry111/arm64-12.0 xry111/clfs-ng xry111/lfs-next xry111/loongarch xry111/loongarch-12.0 xry111/loongarch-12.1 xry111/loongarch-12.2 xry111/mips64el xry111/multilib xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since 31a5625f was cd0c92d6, checked in by Alex Gronenwoud <alex@…>, 21 years ago

Adding a touch of mtab before the running of Coreutils test suite.

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@3257 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

  • Property mode set to 100644
File size: 3.8 KB
Line 
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
6basic 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>&nbsp;</title><para>&nbsp;</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
24broken, in that the <emphasis>-p</emphasis> switch always returns "unknown".
25The 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
31provided 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 test suite of Coreutils makes several assumptions about the presence
44of files and users that aren't valid yet this early in the LFS build. We will
45therefore have to set up a few things before being able to run the tests. If
46you choose not to run these tests, skip down to "Install the package".</para>
47
48<para>To be able to run the full test suite, the <command>su</command> program
49needs to be installed. We didn't bother to install this little program in
50<xref linkend="chapter-temporary-tools"/> because it requires root privileges,
51so do it now:</para>
52
53<screen><userinput>make install-root</userinput></screen>
54
55<para>Create a 'table of mounted filesystems' file with:</para>
56
57<screen><userinput>touch /etc/mtab</userinput></screen>
58
59<para>And create two dummy groups and a dummy user name:</para>
60
61<screen><userinput>echo "dummy1:x:1000" &gt;&gt; /etc/group
62echo "dummy2:x:1001:dummy" &gt;&gt; /etc/group
63echo "dummy:x:1000:1000:::/bin/bash" &gt;&gt; /etc/passwd</userinput></screen>
64
65<para>Now you're all set to run the test suite. First run the few tests that
66are meant to be run as <emphasis>root</emphasis>:</para>
67
68<screen><userinput>make check-root</userinput></screen>
69
70<para>Then run the remainder of the tests as the <emphasis>dummy</emphasis>
71user:</para>
72
73<screen><userinput>su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"</userinput></screen>
74
75<para>When you're done testing, remove the dummy user and groups:</para>
76
77<screen><userinput>sed -i.bak '/dummy/d' /etc/passwd /etc/group</userinput></screen>
78
79<para>Install the package:</para>
80
81<screen><userinput>make install</userinput></screen>
82
83<para>And move some programs to their proper locations:</para>
84
85<screen><userinput>mv /usr/bin/{basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
86mv /usr/bin/{date,echo,false,head,install,ln,ls} /bin
87mv /usr/bin/{mkdir,mknod,mv,pwd,rm,rmdir,sync} /bin
88mv /usr/bin/{sleep,stty,su,test,touch,true,uname} /bin
89mv /usr/bin/chroot /usr/sbin</userinput></screen>
90
91<para>We'll be using the <filename>kill</filename> program from the Procps
92package (installed as <filename>/bin/kill</filename> later in the chapter).
93Remove the one installed by Coreutils:</para>
94
95<screen><userinput>rm /usr/bin/kill</userinput></screen>
96
97<para>Finally, create two symlinks to be FHS-compliant:</para>
98
99<screen><userinput>ln -s test /bin/[
100ln -s ../../bin/install /usr/bin</userinput></screen>
101
102</sect2>
103
104&aa-coreutils-shortdesc;
105&aa-coreutils-desc;
106
107</sect1>
108
Note: See TracBrowser for help on using the repository browser.