<Precedenti | Contenuti | Succ.>
6.54.1. Installazione di Coreutils
POSIX richiede che i programmi di Coreutils riconoscano correttamente i confini dei caratteri anche in locali multibyte. La patch seguente risolve questa non conformità e altri bug relativi all'internazionalizzazione.
patch -Np1 -i ../coreutils-8.31-i18n-1.patch
patch -Np1 -i ../coreutils-8.31-i18n-1.patch
Note:
In passato, sono stati trovati molti bug in questa patch. Quando si segnalano nuovi bug ai manutentori di Coreutils, controllare prima se sono riproducibili senza questa patch.
Note:
In passato, sono stati trovati molti bug in questa patch. Quando si segnalano nuovi bug ai manutentori di Coreutils, controllare prima se sono riproducibili senza questa patch.
Sopprimere un test che su alcune macchine può eseguire il ciclo all'infinito:
sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk
sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk
Ora prepara Coreutils per la compilazione:
autoreconf -fiv FORCE_UNSAFE_CONFIGURE=1 ./configure \
--prefisso=/usr \
--enable-no-install-program=kill, uptime
autoreconf -fiv FORCE_UNSAFE_CONFIGURE=1 ./configure \
--prefisso=/usr \
--enable-no-install-program=kill, uptime
Il significato delle opzioni di configurazione:
autoconf
Questo comando aggiorna i file di configurazione generati coerenti con l'ultima versione di automake.
FORCE_UNSAFE_CONFIGURE=1
Questa variabile di ambiente consente di compilare il pacchetto come utente root.
--enable-no-install-program=kill, uptime
Lo scopo di questa opzione è impedire a Coreutils di installare binari che verranno installati da altri pacchetti in un secondo momento.
Compila il pacchetto:
make
make
Passare a "Installa il pacchetto" se non si esegue la suite di test.
Ora la suite di test è pronta per essere eseguita. Innanzitutto, esegui i test che devono essere eseguiti come utente radice:
make NON_ROOT_USERNAME=nessuno check-root
make NON_ROOT_USERNAME=nessuno check-root
Eseguiremo il resto dei test come nessuno utente. Alcuni test, tuttavia, richiedono che l'utente sia membro di più di un gruppo. In modo che questi test non vengano saltati, aggiungeremo un gruppo temporaneo e renderemo l'utente nessuno una parte di esso:
echo "dummy:x:1000:nobody" >> /etc/group
echo "dummy:x:1000:nobody" >> /etc/group
Correggi alcune delle autorizzazioni in modo che l'utente non root possa compilare ed eseguire i test:
chown -Rv nessuno .
chown -Rv nessuno .
Ora esegui i test. Assicurati che il PERCORSO nel su ambiente include /tools/bin.
su nessuno -s /bin/bash \
-c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"
su nessuno -s /bin/bash \
-c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"
È noto che il programma di test test-getlogin fallisce in un ambiente di sistema parzialmente compilato come l'ambiente chroot qui, ma passa se eseguito alla fine di questo capitolo. È noto che anche il programma di test tty.sh fallisce.
Rimuovere il gruppo temporaneo:
sed -i '/dummy/d' /etc/group
sed -i '/dummy/d' /etc/group
Installa il pacchetto:
make install
make install
Sposta i programmi nelle posizioni specificate dall'FHS:
mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,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,date,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
Alcuni degli script nel pacchetto LFS-Bootscripts dipendono da capo, bello, sonnoe toccare. I / usr potrebbero non essere disponibili durante le fasi iniziali e finali dell'avvio, questi file binari devono essere nella partizione di root per mantenere la conformità FHS:
mv -v /usr/bin/{testa,bello,sonno,tocco} /bin
mv -v /usr/bin/{testa,bello,sonno,tocco} /bin