8.57. Coreutils-9.4

Le paquet Coreutils contient les utilitaires de base requis dans tous les systèmes d'exploitation.

Temps de construction approximatif: 1,0 SBU
Espace disque requis: 175 Mo

8.57.1. Installation de Coreutils

POSIX exige que les programmes de Coreutils reconnaissent correctement les limites de caractères même pour des encodages sur plusieurs octets. Le correctif suivant corrige cette absence de conformité et d'autres bogues liés à l'internationalisation.

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

Note

Certains utilisateurs ont trouvé plusieurs bogues dans ce correctif. Avant de signaler des nouveaux bogues aux mainteneurs de Coreutils, veuillez vérifier si les bogues se reproduisent quand le correctif n'est pas déployé.

Corrigez une vulnérabilité de sécurité dans l'utilitaire split :

sed -e '/n_out += n_hold/,+4 s|.*bufsize.*|//&|' \
    -i src/split.c

Maintenant, préparez la compilation de Coreutils :

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

Voici la signification des options de configuration :

autoreconf

Le correctif pour l'internationalisation a modifié le système de construction. Les fichiers de configuration doivent être régénérés.

FORCE_UNSAFE_CONFIGURE=1

Cette variable d'environnement permet à l'utilisateur root de compiler le paquet.

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

Ce paramètre empêche Coreutils d'installer des programmes qui seront installés plus tard par d'autres paquets.

Compilez le paquet :

make

Passez à la partie « 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=tester check-root

Nous allons exécuter le reste des tests en tant qu'utilisateur tester. 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 tester :

groupadd -g 102 dummy -U tester

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

chown -R tester . 

Maintenant lancez les tests :

su tester -c "PATH=$PATH make RUN_EXPENSIVE_TESTS=yes check"

Supprimez le groupe temporaire :

groupdel dummy

Installez le paquet :

make install

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

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"/' /usr/share/man/man8/chroot.8

8.57.2. Contenu de Coreutils

Programmes installés: [, b2sum, base32, base64, basename, basenc, 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 (dans /usr/libexec/coreutils)
Répertoire installé: /usr/libexec/coreutils

Descriptions courtes

[

La commande /usr/bin/[ est une vraie commande. Il s'agit d'une équivalente de la commande test

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)

b2sum

Affiche ou vérifie des sommes de contrôle 512-bit BLAKE2

basename

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

basenc

Encode ou décode des données avec divers algorithmes

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 au mode indiqué. Le mode peut être une représentation symbolique des modifications à faire ou 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é en tant que 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 et affiche sur trois colonnes les lignes uniques et les lignes communes

cp

Copie des fichiers

csplit

Divise un fichier donné en plusieurs fichiers. Les nouveaux fichiers sont séparés par des motifs donnés ou des numéros de lignes et le nombre total d'octets de chaque nouveau fichier est affiché

cut

Affiche des parties de lignes et sélectionne ces parties suivant des champs ou positions donnés

date

Affiche la date et l'heure actuelle dans le format donné ou initialise la date et l'heure du 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

Extrait les parties d'un répertoire des noms donnés

du

Affiche le total de l'espace disque utilisé par le répertoire actuel, ou par chacun des répertoires donnés dont 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 des entiers spécifiés

false

Ne fait rien, comme prévu, et 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 donné

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 matériel, avec le nom donné, vers un fichier

ln

Crée des liens symboliques ou matériels entre des fichiers

logname

Indique l'identifiant 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), des « tubes nommés » dans le jargon Unix, avec les noms donnés

mknod

Crée des nœuds de périphériques avec les noms donnés. Un nœud de périphérique est de type caractère, bloc, ou 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 qui affiche certaines 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 les répertoires 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 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 éléments, 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 différentes pour ses flux 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 et les 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, comme prévu, et quitte toujours 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 et é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

Signale le nombre de lignes, mots et octets de chaque fichier indiqué ainsi que le grand total 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 s'arrête

libstdbuf

Bibliothèque utilisée par stdbuf