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 approximatif :  0,9 SBU
Espace disque requis :                69 Mo

L'installation de Coreutils dépend de Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed.

Installation de Coreutils

Normalement, la fonctionnalité d'uname est un peu cassé car l'option -p renvoit aussi « unknown » (inconnu). Le correctif suivant supprime ce comportement pour les architectures Intel :

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

Nous ne voulons pas que Coreutils installe sa version du programme hostname car il est inférieur à la version fournie par Net-tools. Empêchez son installation en appliquant le correctif :

patch -Np1 -i ../coreutils-5.2.1-hostname-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 de fichiers et d'utilisateurs qui ne sont pas valides si tôt dans la construction de LFS. Nous allons donc configurer certains points avant d'être capable de lancer ces tests. Si vous choisissez de ne pas lancer ces tests, allez directement à « Installez le paquet ».

Pour être capable de lancer la suite de tests complète, le programme su a besoin d'être installé. Nous ne nous étions pas occupés d'installer ce petit programme dans le Chapitre 5 parce qu'il requiert les droits de root, donc faites-le maintenant :

make install-root

Créez le fichier contenant la liste des systèmes de fichiers montés avec :

touch /etc/mtab

Et 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, vous êtes prêt à lancer la suite de tests. Tout d'abord, lancez les quelques tests qui ont besoin d'être lancé en tant que root :

export NON_ROOT_USERNAME=dummy; make check-root

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

su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"

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

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

Installez le paquet :

make install

Et déplacez quelques programmes aux bons emplacements :

mv /usr/bin/{basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
mv /usr/bin/{date,echo,false,head,install,ln,ls} /bin
mv /usr/bin/{mkdir,mknod,mv,pwd,rm,rmdir,sync} /bin
mv /usr/bin/{sleep,stty,su,test,touch,true,uname} /bin
mv /usr/bin/chroot /usr/sbin

Nous allons utiliser le programme kill à partir du paquet Procps (installé en tant que /bin/kill plus tard dans ce chapitre). Supprimez celui installé par Coreutils :

rm /usr/bin/kill

Finalement, créez deux liens symboliques pour être compatible avec la FHS :

ln -s test /bin/[
ln -s ../../bin/install /usr/bin

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, su, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, uptime, users, vdir, wc, who, whoami et yes

Courtes descriptions

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 par le groupe donné pour chaque fichier indiqué. Le groupe peut être soit un nom soit un identifiant numérique.

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 pour chaque fichier donné en utilisant la paire utilisateur:groupe.

chroot lance une commande donnée avec le répertoire spécifié en tant que répertoire racine (/). La commande donnée peut être un shell interactif. Sur la plupart des systèmes, seul l'utilisateur root peut le faire.

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 est identique à 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 renvoit 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'identifiant numérique de l'hôte en héxadécimal.

hostname affiche ou initialise le nom de l'hôte.

id affiche l'identifiant effectif de l'utilisateur courant ou de l'utilisateur précisé, l'identifiant 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 don né. Par défaut, il ordonne les fichiers et sous-répertoires alphabetiquement.

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 est un « 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 permutté à 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.

stty initialise ou affiche les paramètrages de la ligne du terminal.

su lance un shell avec un identifiant utilisateur et groupe de substitution.

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 l ongueur 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 ne conserver qu'une ligne sur plusieurs lignes identiques successivement.

unlink supprime le fichier donné.

uptime indique depuis combien de temps le système est démarré, combien d'utilisateurs sont actuellement connectés ainsi que les moyennes de charge du système.

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'identifiant utilisateur effectif.

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