6.54.1. Installation von Coreutils
POSIX erfordert, dass Programme von Coreutils Zeichengrenzen auch in Multibyte-Gebietsschemata korrekt erkennen. Der folgende Patch behebt diese Nichteinhaltung und andere Fehler im Zusammenhang mit der Internationalisierung.
patch -Np1 -i ../coreutils-8.31-i18n-1.patch
patch -Np1 -i ../coreutils-8.31-i18n-1.patch
Note
In der Vergangenheit wurden in diesem Patch viele Fehler gefunden. Wenn Sie den Coreutils-Betreuern neue Fehler melden, prüfen Sie bitte zunächst, ob diese ohne diesen Patch reproduzierbar sind.
Note
In der Vergangenheit wurden in diesem Patch viele Fehler gefunden. Wenn Sie den Coreutils-Betreuern neue Fehler melden, prüfen Sie bitte zunächst, ob diese ohne diesen Patch reproduzierbar sind.
Unterdrücken Sie einen Test, der auf manchen Maschinen eine Endlosschleife verursachen kann:
sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk
sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk
Bereiten Sie nun Coreutils für die Kompilierung vor:
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
Die Bedeutung der Konfigurationsoptionen:
Autoreconf
Dieser Befehl aktualisiert generierte Konfigurationsdateien im Einklang mit der neuesten Version von Automake.
FORCE_UNSAFE_CONFIGURE=1
Diese Umgebungsvariable ermöglicht die Erstellung des Pakets als Root-Benutzer.
--enable-no-install-program=kill,uptime
Der Zweck dieses Schalters besteht darin, zu verhindern, dass Coreutils Binärdateien installiert, die später von anderen Paketen installiert werden.
Stellen Sie das Paket zusammen:
um
um
Springen Sie nach unten zu „Paket installieren“, wenn die Testsuite nicht ausgeführt wird.
Jetzt kann die Testsuite ausgeführt werden. Führen Sie zunächst die Tests aus, die als Benutzer ausgeführt werden sollen Wurzel:
Machen Sie NON_ROOT_USERNAME=niemand check-root
Machen Sie NON_ROOT_USERNAME=niemand check-root
Wir werden den Rest der Tests wie folgt durchführen niemand Benutzer. Bestimmte Tests erfordern jedoch, dass der Benutzer Mitglied in mehr als einer Gruppe ist. Damit diese Tests nicht übersprungen werden, fügen wir eine temporäre Gruppe hinzu und erstellen den Benutzer niemand ein Teil davon:
echo „dummy:x:1000:nobody“ >> /etc/group
echo „dummy:x:1000:nobody“ >> /etc/group
Korrigieren Sie einige Berechtigungen, damit der Nicht-Root-Benutzer die Tests kompilieren und ausführen kann:
chown -Rv niemand.
chown -Rv niemand.
Führen Sie nun die Tests durch. Stellen Sie sicher, dass der PFAD im su Die Umgebung umfasst /tools/bin.
su niemand -s /bin/bash \
-c „PATH=$PATH RUN_EXPENSIVE_TESTS=ja prüfen lassen“
su niemand -s /bin/bash \
-c „PATH=$PATH RUN_EXPENSIVE_TESTS=ja prüfen lassen“
Es ist bekannt, dass das Testprogramm test-getlogin in einer teilweise erstellten Systemumgebung wie der Chroot-Umgebung hier fehlschlägt, aber wenn es am Ende dieses Kapitels ausgeführt wird, besteht es. Es ist auch bekannt, dass das Testprogramm tty.sh fehlschlägt.
Entfernen Sie die temporäre Gruppe:
sed -i '/dummy/d' /etc/group
sed -i '/dummy/d' /etc/group
Installieren Sie das Paket:
make install
make install
Verschieben Sie Programme an die von der FHS vorgegebenen Speicherorte:
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
Einige der Skripte im LFS-Bootscripts-Paket hängen davon ab ganzer, schön, schlafen und aufnehmen. Die / usr Während der frühen und späten Phase des Bootvorgangs möglicherweise nicht verfügbar sind, müssen sich diese Binärdateien auf der Root-Partition befinden, um die FHS-Konformität aufrechtzuerhalten:
mv -v /usr/bin/{head,nice,sleep,touch} /bin
mv -v /usr/bin/{head,nice,sleep,touch} /bin