6.51. Coreutils-8.27

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

Temps de construction approximatif: 2.4 SBU
Espace disque requis: 171 Mo

6.51.1. Installation de Coreutils

POSIX exige que les programmes de Coreutils reconnaissent les limites des caractères correctement même dans des locales multibyte. Le correctif suivant corrige cette rigidité et d'autres bogues liés à l'internationalisation.

patch -Np1 -i ../coreutils-8.27-i18n-1.patch
[Note]

Note

Autrefois, on a trouvé beaucoup de bogues dans ce correctif. Lorsque vous signalez aux mainteneurs de Coreutils de nouveaux bogues, merci de vérifier d'abord qu'ils sont reproductibles sans ce correctif.

Supprimez un test qui peut boucler indéfiniment sur certaines machines :

sed -i '/test.lock/s/^/#/' gnulib-tests/gnulib.mk

Maintenant, préparez la compilation de Coreutils :

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

Voici la signification des options de configuration.

FORCE_UNSAFE_CONFIGURE=1

Cette variable d'environnement permet au paquet d'être compilé avec l'utilisateur root.

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

Le but de ce paramètre est d'empêcher Coreutils d'installer des binaires qui seront installés plus tard par d'autres paquets.

Compilez le paquet :

FORCE_UNSAFE_CONFIGURE=1 make

Passez à « Installez le paquet » si vous n'exécutez pas la suite de test.

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

make NON_ROOT_USERNAME=nobody check-root

Nous allons exécuter le reste des tests en tant qu'utilisateur nobody. Certains tests exigent cependant que l'utilisateur soit membre de plus d'un groupe. Afin que ces tests ne soient pas sautés, nous allons ajouter un groupe temporaire et y ajouter l'utilisateur nobody :

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

Corrigez des droits afin qu'un utilisateur non-root puisse compiler et exécuter les tests :

chown -Rv nobody . 

Maintenant, lancez les tests. Assurez-vous que PATH dans l'environnement su inclut /tools/bin.

su nobody -s /bin/bash \
          -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"

Les programmes de test test-getlogin et date-debug sont connus pour échouer dans un environnement de construction partiel comme l'environnement chroot actuel, mais ils fonctionneraient s'ils étaient lancés à la fin de ce chapitre.

Supprimez le groupe temporaire :

sed -i '/dummy/d' /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,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 -i s/\"1\"/\"8\"/1 /usr/share/man/man8/chroot.8

Certains paquets dans BLFS et au-delà attendent les programmes suivant dans /bin, assurez-vous donc qu'ils y sont placés :

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

6.51.2. Contenu de Coreutils

Programmes installés: [, base32, 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, id, install, join, link, ln, logname, ls, md5sum, mkdir, mkfifo, mknod, mktemp, mv, nice, nl, nohup, nproc, numfmt, 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 et yes
Bibliothèque installée: libstdbuf.so
Répertoire installé: /usr/libexec/coreutils

Descriptions courtes

base32

Encode et décode des données selon la spécification de la base32 (RFC 4648)

base64

Encode et décode des données selon la spécification de la base64 (RFC 4648)

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

Modifie le contexte de sécurité des fichiers et des dossiers

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 le 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. Il renvoie toujours 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)

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 leurs 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 nœuds périphérique avec les noms donnés. Un nœud périphérique est de type caractère ou bloc, ou encore un FIFO

mktemp

Crée des fichiers temporaires de manière sécurisée, il est utilisé dans des scripts

mv

Déplace ou renomme des fichiers ou répertoires

nice

Lance un programme avec une priorité modifiée

nl

Numérote les lignes de fichiers donnés

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 d'action disponibles pour un processus

numfmt

Convertit des numéros en chaînes lisibles par un humain ou vice-versa

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é, un peu comme 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 du 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'un intervalle et avec un incrément spécifié

sha1sum

Affiche ou vérifie des sommes de contrôle 160-bit Secure Hash Algorithm (SHA1)

sha224sum

Affiche ou vérifie des sommes de contrôle 224-bit Secure Hash Algorithm (SHA1)

sha256sum

Affiche ou vérifie des sommes de contrôle 256-bit Secure Hash Algorithm (SHA1)

sha384sum

Affiche ou vérifie des sommes de contrôle 384-bit Secure Hash Algorithm (SHA1)

sha512sum

Affiche ou vérifie des sommes de contrôle 512-bit Secure Hash Algorithm (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

shuf

Mélange des lignes de texte

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

stdbuf

Lance des commandes avec des opérations de mise en tampon modifiées pour ses streamings standards

stty

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

sum

Affiche la somme de contrôle et le nombre de blocs pour chacun des fichiers donnés

sync

Vide les tampons du système de fichiers. Cela force l'enregistrement sur disque des blocs modifiés 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 des valeurs et vérifie les types de fichiers

timeout

Lance une commande avec une limite de temps

touch

Modifie l'horodatage d'un 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

Convertit, compresse et supprime les caractères lus depuis 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 augmente un fichier selon 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 des informations système

unexpand

Convertit les espaces en tabulations

uniq

Ne conserve qu'une seule ligne parmi plusieurs lignes successives identiques

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 indéfiniment « y » ou la chaîne précisée jusqu'à ce que le processus soit tué

libstdbuf

Bibliothèque utilisée par stdbuf