10.23. Coreutils-8.21

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

10.23.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 toutes les architectures :

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

Maintenant, préparez la compilation de Coreutils :

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

Voici la signification des options de configure :

FORCE_UNSAFE_CONFIGURE=1

Oblige Coreutils à se compiler lorsqu'on utilise l'utilisateur root user.

Compilez le paquet :

make

La suite de tests de Coreutils fait plusieurs suppositions sur la présence d'utilisateurs et de groupes système qui ne sont pas valides à l'intérieur de l'environnement minimal existant pour le moment. Donc des étapes supplémentaires doivent être effectuées avant de lancer les tests. Sautez à « Installer le paquet » si vous ne lancez pas la suite de tests.

Créez deux groupes dummy et un utilisateur dummy :

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

Tout d'abord, lancez les quelques tests qui ont besoin d'être lancés en tant que root :

make NON_ROOT_USERNAME=dummy SUBDIRS= check-root

Nous allons maintenant lancer la suite de tests en tant qu'utilisateur dummy. Corrigez les droits de quelques fichiers pour autoriser cela :

chown -Rv dummy .

Puis, exécutez le reste des tests en tant qu'utilisateur nobody :

su dummy -s /bin/bash \
    -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes -k check || true"

Lorsque les tests sont complétés, supprimez l'utilisateur et les groupes dummy :

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} /bin
mv -v /usr/bin/{dd,df,echo,false,hostname,ln,ls,mkdir,mknod} /bin
mv -v /usr/bin/{mv,pwd,rm,rmdir,stty,true,uname} /bin
mv -v /usr/bin/chroot /usr/sbin

D'autres programmes de Coreutils sont utilisés par certains des scripts du paquet CLFS-Bootscripts. Comme il se peut que /usr ne soit pas disponible pendant les premières étapes du démarrage, ces binaires doivent être sur la partition racine :

mv -v /usr/bin/{[,basename,head,install,nice} /bin
mv -v /usr/bin/{readlink,sleep,sync,test,touch} /bin
ln -svf ../../bin/install /usr/bin

10.23.2. Contenu de Coreutils

Programmes installés: [, base64, basename, cat, chcon, 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, nproc, od, paste, pathchk, pinky, pr, printenv, printf, ptx, pwd, readlink, realpath, rm, rmdir, runcon, seq, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, shred, shuf, sleep, sort, split, stat, stdbuf, stty, sum, sync, tac, tail, tee, test, timeout, touch, tr, true, truncate, tsort, tty, uname, unexpand, uniq, unlink, users, vdir, wc, who, whoami, and yes
Répertoires installés: libstdbuf.so

Descriptions courtes

base64

base64 encode/décode des données et affiche sur la sortie standard

basename

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

cat

Concatène des fichiers sur la sortie standard

chcon

Change le contexte de sécurité pour des fichiers ou des répertoires

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 et le nombre de blocs donnés 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 en échouant. Il renvoie toujours un code d'erreur indiquant l'échec

fmt

Reformate les paragraphes dans les fichiers donnés

fold

Remplit 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 FIFO (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 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 une priorité modifiée

nl

nohup

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

nproc

Affiche le nombre d'unités de calcul disponibles sur le processus actuel

od

Affiche les fichiers en octal ou sous d'autres formes

paste

Joint les fichiers donnés en plaçant les lignes correspondantes l'une à côté de l'autre, 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é, à la façon de la fonction C printf

ptx

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

pwd

Indique le nom du répertoire courant

readlink

Indique la valeur d'un lien symbolique

realpath

Affiche le chemin résolu

rm

Supprime des fichiers ou des répertoires

rmdir

Supprime des répertoires s'ils sont vides

runcon

Lance une commande avec le contexte de sécurité spécifié

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 contrôle 160-bit Secure Hash Algorithm 1 (SHA1)

sha224sum

Affiche ou vérifie des sommes de contrôle SHA224

sha256sum

Affiche ou vérifie des sommes de contrôle SHA256

sha384sum

Affiche ou vérifie des sommes de contrôle SHA384

sha512sum

Affiche ou vérifie des sommes de contrôle SHA512

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

shuf

Écrit une permutation aléatoire des lignes en entrée sur la sortie standard ou dans un fichier

sleep

Fait une pause d'un certain temps

sort

Trie les lignes des fichiers donnés

split

Divise les fichiers donnés en plusieurs parties, par taille ou par nombre de lignes

stat

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

stdbuf

Lance une commande avec des opérations de mise en tampon modifiées pour ses streams standards

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 de données

sync

Vide les tampons du système de fichiers. Cela force l'enregistrement des blocs 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 des fichiers indiqués

test ou [

Compare les valeurs et vérifie les types de fichiers

timeout

Lance une commande avec une limite temporelle

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

truncate

Réduit ou agrandit un fichier à la taille spécifiée

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 une ligne parmi plusieurs lignes identiques successives

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 total de lignes 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é

libstdbuf

Bibliothèque utilisée par stdbuf