Installieren von Coreutils-5.0

Geschätzte Kompilierzeit:              0.9 SBU
Ungefähr benötigter Festplattenplatz:  69 MB

Inhalt von Coreutils

Das Paket Coreutils enthält eine große Anzahl von Shell Werkzeugen.

Installierte Programme: basename, cat, chgrp, chmod, chown, chroot, cksum, comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname, du, echo, env, expand, expr, factor, false, fmt, fold, groups, head, hostid, hostname, id, install, join, kill, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred, sleep, sort, split, stat, stty, su, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, uptime, users, vdir, wc, who, whoami und yes

Coreutils Installationsabhängigkeiten

Coreutils ist abhängig von: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed.

Installation von Coreutils

Die Funktion von uname ist ein wenig Fehlerhaft, weil der -p Schalter immer "unknown" ausgibt. Der folgende Patch behebt das Problem auf Intel Architekturen:

patch -Np1 -i ../coreutils-5.0-uname.patch

Wir möchten nicht, das Coreutils seine Version von hostname installiert, weil sie schlechter ist als die von Net-tools bereitgestellte. Verhindern sie die Installation mit dem folgenden Patch:

patch -Np1 -i ../coreutils-5.0-hostname-2.patch

Bereiten sie Coreutils zum kompilieren vor:

./configure --prefix=/usr

Kompilieren sie das Paket:

make

Das Programm su aus Coreutils wurde in Kapitel 5 nicht installiert weil man dazu root Rechte benötigt. Wir brauchen es aber gleich für die Test-suite. Daher installieren wir es nun:

make install-root

Dieses Paket hat eine Test-suite mit der sie überprüfen können ob alles korrekt kompiliert wurde. Diese Test-suite macht einige Annahmen in Hinsicht auf die Existenz von nicht-root Benutzern und Gruppen und diese sind in in unserem LFS System noch nicht vorhanden. Wir erstellen nun einen dummy System Benutzer und zwei dummy Gruppen damit die Tests sauber durchlauen können. Falls sie diese Test-suite nicht ausführen möchten, überspringen sie sie und fahren sie mit "Installieren sie das Paket" fort. Das folgende Kommando bereitet uns auf das ausführen der Test-suite vor. Erstellen sie zwei dummy Gruppen und einen dummy Benutzernamen:


echo "dummy1:x:1000" >> /etc/group
echo "dummy2:x:1001:dummy" >> /etc/group
echo "dummy:x:1000:1000:::/bin/bash" >> /etc/passwd

Ein paar Tests müssen als root ausgeführt werden:

make check-root

Die verbleibenden Tests werden als dummy Benutzer ausgeführt:

su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"

Entfernen sie die dummy Gruppen und Benutzer:

sed -i.bak '/dummy/d' /etc/passwd /etc/group

Installieren sie das Paket:

make install

Und verschieben sie einige Programme an die richtige Stelle:

mv /usr/bin/{basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
mv /usr/bin/{dir,dircolors,du,date,echo,false,head} /bin
mv /usr/bin/{install,ln,ls,mkdir,mkfifo,mknod,mv,pwd} /bin
mv /usr/bin/{rm,rmdir,shred,sync,sleep,stty,su,test} /bin
mv /usr/bin/{touch,true,uname,vdir} /bin
mv /usr/bin/chroot /usr/sbin

Schliesslich erstellen sie noch ein paar nötige symbolische Links:

ln -s test /bin/[
ln -s ../../bin/install /usr/bin