6.15. Coreutils-5.2.1

Le paquet Coreutils contient des outils pour afficher et configurer les caractéristiques basiques d'un système.

Temps de construction estimé : 0,9 SBU
Espace disque requis : 52,8 Mo
Dépendances de l'installation : Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl et Sed

6.15.1. Installation de Coreutils

Un problème connu avec le programme uname provenant de ce paquet est que l'option -p renvoie toujours unknown. Le correctif suivant corrige ce comportement pour les architectures Intel :

patch -Np1 -i ../coreutils-5.2.1-uname-2.patch

Empêchez Coreutils d'installer des binaires qui pourraient être installés plus tard par d'autres paquets :

patch -Np1 -i ../coreutils-5.2.1-suppress_uptime_kill_su-1.patch

Maintenant, préparez la compilation de Coreutils :

DEFAULT_POSIX2_VERSION=199209 ./configure --prefix=/usr

Compilez le paquet :

make

La suite de tests de Coreutils fait quelques suppositions sur la présence d'utilisateurs et de groupes systèmes qui ne sont pas valides à l'intérieur de l'environnement minimal qui existe pour le moment. Du coup, des éléments supplémentaires doivent être configurés avant de lancer ces tests. Allez directement à « Installez le paquet » si vous ne comptez pas lancer les tests.

Créez deux groupes et un utilisateur :

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

Maintenant, la suite de tests peut être lancée. Tout d'abord, lancez les quelques tests qui ont besoin d'être lancé en tant que root :

make NON_ROOT_USERNAME=dummy check-root

Puis, lancez le reste des tests en tant qu'utilisateur dummy :

src/su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"

Une fois les tests terminés, supprimez l'utilisateur et les groupes :

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

Installez le paquet :

make install

Déplacez quelques programmes aux emplacements spécifiés par le FHS :

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,rm} /bin
mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin
mv -v /usr/bin/chroot /usr/sbin

Certains des scripts du paquet LFS-Bootscripts dépendent de head et sleep. Comme /usr pourrait ne pas être disponible dans les premières phases du démarrage, ces binaires ont besoin d'être sur la partition root :

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

6.15.2. Contenu de Coreutils

Programmes installés: 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, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred, 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 et yes

Descriptions courtes

basename

Supprime tout le chemin et un suffixe donné à partir du nom de fichier donné

cat

Concatène des fichiers sur la sortie standard

chgrp

Change le groupe propriétaire de certains fichiers et répertoires.

chmod

Change les droits de chaque fichier donné avec le mode indiqué. Le mode peut être soit une représentation symbolique des modifications à faire soit un nombre octal représentant les nouveaux droits

chown

Modifie le propriétaire utilisateur et/ou groupe de certains fichiers et répertoires

chroot

Lance une commande avec le répertoire spécifié comme répertoire racine (/)

cksum

Affiche la somme de vérification CRC (Cyclic Redundancy Check) et le nombre d'octets de chaque fichier

comm

Compare deux fichiers triés, affichant sur trois colonnes, les lignes uniques et les lignes communes

cp

Copie des fichiers

csplit

Divise un fichier donné sur plusieurs fichiers indiqués, les séparant par des modèles donnés ou des numéros de lignes. Il affiche le nombre total d'octets pour chaque nouveau fichier

cut

Affiche des parties de lignes, sélectionnant ces parties suivant des champs ou positions donnés

date

Affiche l'heure actuelle dans le format donné ou initialise la date système

dd

Copie un fichier en utilisant la taille de bloc donnée et le nombre, tout en réalisant des conversions optionnelles

df

Affiche l'espace disque disponible (et utilisé) sur tous les systèmes de fichiers montés, ou seulement sur les systèmes de fichiers contenant les fichiers donnés

dir

Liste le contenu de chaque répertoire donné (identique à la commande ls)

dircolors

Affiche les commandes pour initialiser la variable d'environnement LS_COLOR, ce qui permet de changer le schéma de couleurs utilisé par ls

dirname

Supprime le suffixe qui ne représente pas le répertoire dans un nom de fichier donné

du

Affiche le total de l'espace disque utilisé par le répertoire actuel, ou par chacun des répertoires donnés incluant tous les sous-répertoires, ou par chacun des fichiers donnés

echo

Affiche les chaînes données

env

Lance une commande dans un environnement modifié

expand

Convertit les tabulations en espaces

expr

Évalue des expressions

factor

Affiche les facteurs premiers de tous les entiers spécifiés

false

Ne fait rien. Il renvoie toujours un un code d'erreur indiquant l'échec

fmt

Reformate les paragraphes dans les fichiers donnés

fold

Emballe les lignes des fichiers donnés

groups

Affiche les groupes auxquels appartient un utilisateur

head

Affiche les dix premières lignes (ou le nombre demandé de lignes) pour chaque fichier précisé

hostid

Affiche l'identifieur numérique de l'hôte en hexadécimal

hostname

Affiche ou initialise le nom de l'hôte

id

Affiche l'identifieur effectif de l'utilisateur courant ou de l'utilisateur précisé, l'identifieur du groupe et les groupes auxquels appartient cet utilisateur

install

Copie les fichiers en initialisant leur droits et, si possible, leur propriétaire et groupe

join

Joint à partir de deux fichiers les lignes qui ont des champs de jointure identiques

link

Crée un lien physique avec le nom de donné vers le fichier indiqué

ln

Crée des liens symboliques ou physiques entre des fichiers

logname

Indique le nom de connexion de l'utilisateur actuel

ls

Liste le contenu de chaque répertoire donné

md5sum

Affiche ou vérifie les sommes de vérification MD5 (Message Digest 5)

mkdir

Crée des répertoires avec les noms donnés

mkfifo

Crée des fichiers FIFOs (First-In, First-Out, un « tube nommé » dans le vocable d'Unix) avec les noms donnés

mknod

Crée des noeuds périphérique avec les noms donnés. Un noeud périphérique est un fichier spécial de type caractère ou bloc, ou encore un FIFO

mv

Déplace ou renomme des fichiers ou répertoires

nice

Lance un programme avec un priorité modifiée

nl

Numérote les lignes des fichiers donnés

nohup

Lance une commande immune aux arrêts brutaux, dont la sortie est redirigée vers un journal de traces

od

Affiche les fichiers en octal ou sous d'autres formes

paste

Joint les fichiers donnés en faisant plaçant les lignes correspondantes ligne par ligne en les séparant par des caractères de tabulation

pathchk

Vérifie que les noms de fichier sont valides ou portables

pinky

Un client « finger » léger. Il affiche quelques informations sur les utilisateurs indiqués

pr

Fait de la pagination, principalement en colonne, des fichiers pour une impression

printenv

Affiche l'environnement

printf

Affiche les arguments donnés suivant le format demandé, un peu comme la fonction C printf

ptx

Produit un index permuté à partir du contenu des fichiers indiqués, avec le contexte de chaque mot

pwd

Indique le nom du répertoire courant

readlink

Indique la valeur du lien symbolique

rm

Supprime des fichiers ou des répertoires

rmdir

Supprime des répertoires s'ils sont vides

seq

Affiche une séquence de nombres, à l'intérieur d'une échelle et avec un incrément spécifié

sha1sum

Affiche ou vérifie des sommes de vérification 160-bit SHA1

shred

Efface les fichiers indiqués en écrivant dessus des modèles aléatoires pour rendre la récupération des données très difficile

sleep

Fait une pause d'un certain temps

sort

Trie les lignes des fichiers donnés

split

Divise les fichiers donnés en plusieurs pièces, par taille ou par nombre de lignes

stat

Affiche le statut du fichier ou du système de fichiers

stty

Initialise ou affiche les paramètres de la ligne du terminal

sum

Affiche la somme de vérification et le nombre de blocs pour chacun des fichiers donnés

sync

Vide les tampons du système de fichiers. Cela force l'enregistrement des blocs modifiés sur disque et met à jour le superbloc

tac

Concatène les fichiers donnés à l'envers

tail

Affiche les dix dernières lignes (ou le nombre de lignes indiqué) pour chaque fichier précisé

tee

Lit à partir de l'entrée standard en écrivant à la fois sur la sortie standard et sur les fichiers indiqués

test

Compare les valeurs et vérifie les types de fichiers

touch

Modifie les dates et heures du fichier, initialise les dates/heures d'accès et de modification des fichiers indiqués à l'heure actuelle. Les fichiers inexistants sont créés avec une longueur nulle

tr

Traduit, réduit et supprime les caractères donnés à partir de l'entrée standard

true

Ne fait rien mais avec succès. Il quitte avec un code de sortie indiquant une réussite

tsort

Réalise un tri topologique. Il écrit une liste totalement ordonnée suivant un fichier donné partiellement ordonné

tty

Indique le nom du fichier du terminal connecté à l'entrée standard

uname

Affiche les informations système

unexpand

Convertit les espaces en tabulations

uniq

Conserve qu'une ligne sur plusieurs lignes identiques successivement

unlink

Supprime le fichier donné

users

Indique les noms des utilisateurs actuellement connectés

vdir

Est identique à ls -l

wc

Indique le nombre de lignes, mots et octets de chaque fichier indiqué ainsi que le nombre total de ligne lorsque plus d'un fichier est donné

who

Indique qui est connecté

whoami

Indique le nom de l'utilisateur associé avec l'identifieur utilisateur effectif

yes

Affiche « y » ou la chaîne précisée de manière répétée jusqu'à être tué