6.54.1. Instalarea Coreutils
POSIX necesită ca programele de la Coreutils să recunoască limitele de caractere corect chiar și în locale multibyte. Următorul patch remediază această neconformitate și alte erori legate de internaționalizare.
patch -Np1 -i ../coreutils-8.31-i18n-1.patch
patch -Np1 -i ../coreutils-8.31-i18n-1.patch
notițe
În trecut, au fost găsite multe erori în acest patch. Când raportați noi erori către întreținerii Coreutils, vă rugăm să verificați mai întâi dacă sunt reproductibile fără acest patch.
notițe
În trecut, au fost găsite multe erori în acest patch. Când raportați noi erori către întreținerii Coreutils, vă rugăm să verificați mai întâi dacă sunt reproductibile fără acest patch.
Suprimați un test care, pe unele mașini, poate fi continuat în buclă:
sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk
sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk
Acum pregătiți Coreutils pentru compilare:
autoreconf -fiv FORCE_UNSAFE_CONFIGURE=1 ./configure \
--prefix=/usr \
--enable-no-install-program=kill,uptime
autoreconf -fiv FORCE_UNSAFE_CONFIGURE=1 ./configure \
--prefix=/usr \
--enable-no-install-program=kill,uptime
Semnificația opțiunilor de configurare:
autorconf
Această comandă actualizează fișierele de configurare generate în concordanță cu cea mai recentă versiune de automake.
FORCE_UNSAFE_CONFIGURE=1
Această variabilă de mediu permite ca pachetul să fie construit ca utilizator root.
--enable-no-install-program=kill,uptime
Scopul acestui comutator este de a împiedica Coreutils să instaleze fișiere binare care vor fi instalate de alte pachete mai târziu.
Compilați pachetul:
face
face
Treceți în jos la „Instalați pachetul” dacă nu rulați suita de testare.
Acum suita de teste este gata de rulare. Mai întâi, rulați testele care sunt menite să fie rulate ca utilizator rădăcină:
face NON_ROOT_USERNAME=nimeni să verifice rădăcină
face NON_ROOT_USERNAME=nimeni să verifice rădăcină
Vom rula restul testelor ca nimeni utilizator. Anumite teste, totuși, necesită ca utilizatorul să fie membru al mai multor grupuri. Pentru ca aceste teste să nu fie sărite, vom adăuga un grup temporar și vom face utilizatorul nimeni o parte din ea:
echo "dummy:x:1000:nobody" >> /etc/group
echo "dummy:x:1000:nobody" >> /etc/group
Remediați unele dintre permisiuni, astfel încât utilizatorul non-root să poată compila și rula testele:
chown -Rv nimeni .
chown -Rv nimeni .
Acum rulați testele. Asigurați-vă că PATH în su mediul include /tools/bin.
su nobody -s /bin/bash \
-c "PATH=$PATH face RUN_EXPENSIVE_TESTS=da verifica"
su nobody -s /bin/bash \
-c "PATH=$PATH face RUN_EXPENSIVE_TESTS=da verifica"
Se știe că programul de testare test-getlogin eșuează într-un mediu de sistem parțial construit, cum ar fi mediul chroot de aici, dar trece dacă este rulat la sfârșitul acestui capitol. De asemenea, se știe că programul de testare tty.sh eșuează.
Eliminați grupul temporar:
sed -i '/dummy/d' /etc/group
sed -i '/dummy/d' /etc/group
Instalează pachetul:
make install
make install
Mutați programele în locațiile specificate de FHS:
mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,data,dd,df,echo} /bin mv -v /usr/bin/{false,ln,ls,mkdir,mknod,mv, pwd,rm} /bin
mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin mv -v /usr/bin/chroot /usr/sbin
mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8 sed -is/\"1\"/\"8\"/1 /usr/share/man /man8/chroot.8
mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,data,dd,df,echo} /bin mv -v /usr/bin/{false,ln,ls,mkdir,mknod,mv, pwd,rm} /bin
mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin mv -v /usr/bin/chroot /usr/sbin
mv -v /usr/share/man/man1/chroot.1 /usr/share/man/man8/chroot.8 sed -is/\"1\"/\"8\"/1 /usr/share/man /man8/chroot.8
Unele dintre scripturile din pachetul LFS-Bootscripts depind de cap, frumos, dormi, și atingeţi. / usr Este posibil să nu fie disponibile în fazele incipiente și târzii ale pornirii, acele binare trebuie să fie pe partiția rădăcină pentru a menține conformitatea FHS:
mv -v /usr/bin/{cap, frumos, somn, atingere} /bin
mv -v /usr/bin/{cap, frumos, somn, atingere} /bin