Instalowanie Coreutils-5.0

Estimated build time:           0.9 SBU
Estimated required disk space: 69 MB

Zawartość Coreutils

Pakiet Coreutils zawiera całą serię podstawowych użytków powłoki.

Instalowane programy: 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 oraz yes

Zależności Instalacyjne Coreutils

Coreutils zależy od: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed.

Instalowanie Coreutils

Normalnie uname nie działa całkiem dobrze, wtedy przełącznik -p powoduje zawsze wynik "unknown" (nieznany). Następująca łatka naprawia to zachowanie w architekturze Intela:

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

Nie chcemy instalować hostname w wersji z Coreutils, bo jest słabsza niż wersja dostarczana przez Net-tools. Zapobiegamy tej instalacji stosując łatkę:

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

Dalej przygotuj Coreutils do kompilacji:

./configure --prefix=/usr

Skompiluj pakiet:

make

Program su z Coreutils nie był instalowany w Rozdziale 5, ponieważ potrzebował do tego uprawnień użytkownika root. Za kilka chwil będziemy go potrzebować do zestawy testowego. Dlatego obejdziemy ten problem instalując go teraz:

make install-root

Ten pakiet ma dostępny zestaw testowy, który może wykonaś wiele sprawdzeń aby upewnić się, że jest prawidłowo zbudowany. Jednakże ten konkretny zestaw tsstowy robi założenia pod względem obecności nieuprzywilejowanych użytkowników i grup (with regards to the presence of non-root users and groups), które nie są spełnione na tak wczesnym etapie budowy LFS. Dlatego tworzymy "lipnego" użytkownika systemowego i dwie "lipne" grupy, żeby te testy mogły działać prawidłowo. Gdybyś postanowiła nie wykonywać zestawu testowego, przejdź od razu do "Instaluj pakiet". Następujące komendy przygotują nas do zestawu testowego. Utwórz nazwy dwóch lipnych grup i lipnego użytkownika:

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

Niektóre testy mają byc wykonane przez użytkownika root (are meant to run as root):

make check-root

Pozostałe z tych testów wykonuje się jako użytkownik dummy:

su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"

Usuń lipne grupy i użytkownika:

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

Instaluj pakiet:

make install

I przenieś niektóre programy na ich właściwe miejsca:

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

Na koniec utwórz kilka niezbędnych dowiązań symbolicznych (symlinków):

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