6.18. Coreutils-6.12

Das Paket Coreutils enthält viele Shell-Werkzeuge zum Einstellen der grundlegenden Systemeigenschaften.

Geschätzte Kompilierzeit: 1.7 SBU inkl. Testsuite
Etwa Benötigter Speicherplatz: 89 MB inkl. Testsuite

6.18.1. Installation von Coreutils

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

patch -Np1 -i ../coreutils-6.12-uname-1.patch

Es gibt einen internen Fehler in Coreutils, der bei einigen Programmen zu abnormalem Verhalten führt, wenn Sie für den Bau einen älteren Kernel verwenden. Wenden Sie den folgenden Patch an, um das Problem zu beheben:

patch -Np1 -i ../coreutils-6.12-old_build_kernel-1.patch

Von POSIX wird verlangt, dass die Programme von Coreutils Zeichengrenzen auch in Multibyte-Locales erkennen. Der folgende Patch behebt einige diesbezügliche Fehler:

patch -Np1 -i ../coreutils-6.12-i18n-2.patch
[Anmerkung]

Anmerkung

In der Vergangenheit wurden leider viele Fehler in diesem Patch gefunden. Wenn Sie neue Fehler an die Entwickler von Coreutils berichten möchten, prüfen Sie bitte zuallererst, ob sich der Fehler auch ohne diesen Patch noch reproduzieren lässt!

Bereiten Sie Coreutils zum Kompilieren vor:

./configure --prefix=/usr --enable-install-program=hostname --enable-no-install-program=kill,uptime

Die Bedeutung der configure-Parameter:

--enable-no-install-program=kill,uptime

Normalerweise würde Coreutils einige Programme installieren, die später von anderen Paketen bereitgestellt werden sollen. Dieser Parameter verhindet die Installation dieser Programme.

Kompilieren Sie das Paket:

make

Fahren Sie mit „Installieren Sie das Paket“ fort, wenn Sie die Testsuite überspringen möchten.

Sie können die Testsuite nun durchlaufen lassen. Als erstes starten Sie einige Tests, die als root laufen müssen:

make NON_ROOT_USERNAME=nobody check-root

Die verbleibenden Tests werden als Benutzer nobody ausgeführt. Einige Tests erfordern jedoch, dass der Benutzer Mitglied in mehr als einer Gruppe ist. Damit diese Tests nicht übersprungen werden, erstellen Sie nun eine temporäre Gruppe und fügen nobody als Mitglied hinzu:

echo "dummy:x:1000:nobody" >> /etc/group

Korrigieren Sie einige Zugriffsrechte, damit der Nicht-root-Benutzer die Tests kompilieren und durchlaufen lassen kann:

chown -Rv nobody config.log {gnulib-tests,lib,src}/.deps

Jetzt können Sie die Tests ausführen:

su-tools nobody -s /bin/bash -c "make RUN_EXPENSIVE_TESTS=yes check"

Entfernen Sie die temporäre Gruppe wieder:

sed -i '/dummy/d' /etc/group

Installieren Sie das Paket:

make install

Und verschieben Sie einige Programme an die vom FHS vorgegebene Stelle:

mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin
mv -v /usr/bin/{false,hostname,ln,ls,mkdir,mknod,mv,pwd,readlink,rm} /bin
mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin
mv -v /usr/bin/chroot /usr/sbin

Einige der LFS-Bootskripte sind abhängig von den Kommandos head und sleep. Da /usr in den früheren Phasen des Bootvorgangs noch nicht einghängt sein könnte, müssen sich diese Programm auf der root-Partition befinden:

mv -v /usr/bin/{head,sleep,nice} /bin

6.18.2. Inhalt von Coreutils

Installierte Programme: base64, 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, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mktemp, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, shred, shuf, sleep, sort, split, stat, stty, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, users, vdir, wc, who, whoami und yes

Kurze Beschreibungen

base64

Kodiert und dekodiert Daten entsprechend der base64-Spezifikation (RFC 3548).nach

basename

Entfernt den Pfad und Suffix von einem angegebenen Dateinamen.

cat

Gibt Dateien an der Standardausgabe aus bzw. fügt sie zusammen.

chgrp

Ändert die Gruppenzugehörigkeit von Dateien und Ordnern.

chmod

Ändert die Zugriffsrechte der angegebenen Dateien. Der Modus kann entweder symbolisch (in Form der durchzuführenden Änderungen) oder als Oktalzahl angegeben werden (repräsentiert die absoluten neuen Rechte).

chown

Ändert Besitzer und/oder Gruppenzugehörigkeit der angegebenen Dateien und Ordner.

chroot

Macht den angegebenen Ordner temporär zum neuen Basisordner („/“) für den übergebenen Befehl (z. B. bash). Der Befehl wird dann in diesem „Gefängnis“ ausgeführt.

cksum

Gibt die CRC-Prüfsumme (Cyclic Redundancy Check) und die Anzahl der Bytes einer angegebenen Datei aus.

comm

Vergleicht zwei sortierte Dateien und gibt in drei Spalten die Zeilen aus, die jeweils einzigartig bzw. gleich sind.

cp

Kopiert Dateien.

csplit

Teilt eine Datei in mehrere neue Dateien. Dazu wird ein bestimmtes Muster oder Zeilennummern verwendet. Außerdem gibt csplit die Anzahl Bytes der neuen Dateien aus.

cut

Gibt Ausschnitte von Zeilen aus. Die Ausschnitte werden nach Feldern oder Positionsangaben gewählt.

date

Gibt die aktuelle Zeit im angegebenen Format aus oder stellt die Systemzeit ein.

dd

Kopiert eine Datei mit der angegebenen Blockgröße und -anzahl. Optional kann währenddessen eine Konvertierung durchgeführt werden.

df

Berichtet über den verfügbaren (und verwendeten) Festplattenspeicher auf allen eingehängten Dateisystemen oder den Dateisystemen, die die angegebenen Dateien enthalten.

dir

Listet den Inhalt eines Ordners auf (das Gleiche wie ls).

dircolors

Gibt Kommandos zum Setzen der Umgebungsvariable LS_COLOR aus, um damit das Farbschema von ls zu ändern.

dirname

Entfernt den nicht-ordnerspezifischen Teil eines Dateinamens.

du

Gibt aus, wieviel Festplattenspeicher der aktuelle Ordner, die Unterordner und Dateien oder eine einzelne Datei verbraucht.

echo

Gibt eine angegebene Zeichenkette aus.

env

Führt ein Kommando in einer modifizierten Arbeitsumgebung aus.

expand

Konvertiert Tabulatoren zu Leerzeichen.

expr

Wertet einen Ausdruck aus.

factor

Gibt den Primfaktor aller angegebenen Ganzzahlen aus.

false

Tut gar nichts, ist immer erfolglos. Es beendet sich immer mit einem Abschlusscode, der auf einen Fehler hinweist.

fmt

Formatiert die Absätze in der übergebenen Datei neu.

fold

Fügt Zeilenumbrüche in den angegebenen Dateien ein.

groups

Gibt die Gruppenzugehörigkeit eines Benutzers aus.

head

Gibt die ersten zehn (oder die angegebene Anzahl) von Zeilen einer Datei aus.

hostid

Gibt die numerische ID (hexadezimal) des Systems aus.

hostname

Setzt den Hostnamen bzw. zeigt ihn an.

id

Gibt die effektive Benutzer-ID, Gruppen-ID, und Gruppenzugehörigkeit des aktuellen Benutzers oder eines angegebenen Benutzers aus.

install

Kopiert Dateien und setzt deren Zugriffsrechte und, falls möglich, Besitzer und Gruppe.

join

Fügt aus zwei Dateien die Zeilen mit identischen join-Feldern zusammen.

link

Erzeugt einen harten Link von der angegebenen Datei zu einer Datei.

ln

Erzeugt einen harten oder symbolischen Link zwischen Dateien.

logname

Gibt den Login-Namen des aktuellen Benutzers aus.

ls

Listet den Inhalt des angegebenen Ordners auf.

md5sum

Erzeugt eine MD5-Prüfsumme (Message Digest 5) bzw. zeigt sie an.

mkdir

Erzeugt Ordner mit den angegebenen Namen.

mkfifo

Erzeugt FIFOs (First-In, First-Out, eine sogenannte "named Pipe" im UNIX-Sprachgebrauch) mit dem angegebenen Namen.

mknod

Erzeugt eine Gerätedatei mit dem angegebenen Namen. Eine Gerätedatei ist eine spezielle zeichen- oder blockorientierte Datei oder ein FIFO.

mktemp

Erzeugt temporäre Dateien auf sichere Weise. Es wird in Skripten verwendet.

mv

Verschiebt Dateien und Ordner oder benennt sie um.

nice

Führt ein Programm mit geänderter Priorität aus.

nl

Nummeriert die Zeilen der angegebenen Dateien.

nohup

Führt ein Programm aus, so dass es immun gegen „hangup“s ist. Die Ausgaben des Programms werden in eine Protokolldatei umgeleitet.

od

Gibt eine Datei oktal oder in anderen Formaten aus.

paste

Fügt angegebene Dateien zusammen. Sequenziell zusammengehörende Zeilen werden Seite an Seite durch Tabulatoren getrennt zusammengefügt.

pathchk

Prüft, ob Dateinamen gültig und portierbar sind.

pinky

Eine abgespeckte Version von finger. Es gibt ein paar Informationen über den angegebenen Benutzer aus.

pr

Bereitet Dateien seiten- oder spaltenweise für den Ausdruck vor.

printenv

Gibt die Umgebungsvariablen aus.

printf

Gibt die angegebenen Argumente in einem bestimmten Format aus — dies ist der C-Funktion printf sehr ähnlich.

ptx

Erzeugt aus dem Inhalt von Dateien einen vertauschten Index, mit jedem Stichwort im Kontext.

pwd

Gibt den Namen des aktuellen Arbeits-Ordners aus.

readlink

Gibt das Ziel eines symbolischen Links aus.

rm

Löscht Dateien oder Ordner.

rmdir

Löscht leere Ordner.

seq

Gibt eine Zahlenreihe in einem bestimmten Wertebereich und mit einem bestimmten Inkrement aus.

sha1sum

Prüft 160-Bit SHA1-Prüfsummen oder gibt sie aus.

sha224sum

Prüft 224-Bit SHA-Prüfsummen oder gibt sie aus.

sha256sum

Prüft 256-Bit SHA-Prüfsummen oder gibt sie aus.

sha384sum

Prüft 384-Bit SHA-Prüfsummen oder gibt sie aus.

sha512sum

Prüft 512-Bit SHA-Prüfsummen oder gibt sie aus.

shred

Überschreibt eine Datei mehrfach mit zufälligen Mustern, um das Wiederherstellen der Daten zu erschweren.

shuf

Mischt Textzeilen

sleep

Pausiert für die angegebene Zeit.

sort

Sortiert die Zeilen einer Datei.

split

Teilt eine Datei in Stücke, nach Größe oder nach Zeilennummern.

stat

Zeigt den Datei- oder Dateisystemstatus an.

stty

Setzt Terminal-Einstellungen oder zeigt sie an.

sum

Gibt Prüfsumme und Anzahl der Blöcke einer Datei aus.

sync

Schreibt den Dateisystempuffer. Geänderte Blöcke werden auf die Festplatte geschrieben und der Superblock wird aktualisiert.

tac

Fügt Dateien rückwärts zusammen.

tail

Gibt die letzten zehn (oder die angegebene Anzahl) von Zeilen einer Datei aus.

tee

Liest von der Standardeingabe während gleichzeitig auf die Standardausgabe und in eine Datei geschrieben wird.

test

Vergleicht Werte und prüft Dateitypen.

touch

Ändert Zeitstempel von Dateien, setzt Zugriffs- und Änderungszeit einer Datei auf die aktuelle Zeit. Dateien, die noch nicht existieren, werden mit der Länge 0 angelegt.

tr

Übersetzt, quetscht oder entfernt Zeichen von der Standardeingabe.

true

Macht nichts, ist immer erfolgreich. Beendet immer mit einem Statuscode, der Erfolg bedeutet.

tsort

Sortiert topologisch. Schreibt eine vollständig sortierte Liste entsprechend der teilweisen Sortierung in einer Datei.

tty

Gibt den Dateinamen des Terminals aus, das mit der Standardeingabe verbunden ist.

uname

Gibt Systeminformationen aus.

unexpand

Konvertiert Leerzeichen zu Tabulatoren.

uniq

Entfernt alle identischen Zeilen bis auf eine.

unlink

Entfernt eine Datei.

users

Gibt die Namen der eingeloggten Benutzer aus.

vdir

Macht das Gleiche wie ls -l.

wc

Gibt die Anzahl Zeilen, Wörter und Bytes einer Datei aus. Und eine Summe, falls mehrere Dateien angegeben wurden.

who

Zeigt an, wer gerade eingeloggt ist.

whoami

Gibt den Benutzernamen aus, der mit der aktuell effektiven Benutzer-ID verknüpft ist.

yes

Gibt „y“ oder eine andere Zeichenkette solange aus, bis es beendet wird.