6.14. Coreutils-5.96

Il pacchetto Coreutils contiene utilità per visualizzare e impostare le caratteristiche di base del sistema.

Tempo di costruzione approssimativo: 1.1 SBU
Spazio necessario su disco: 58.3 MB

6.14.1. Installazione di Coreutils

Un problema noto con il programma uname di questo pacchetto è che il parametro -p restituisce sempre unknown. La seguente patch corregge questo comportamento per le architetture Intel:

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

Inibire l'installazione da parte di Coreutils di binari che verranno installati da altri programmi più tardi:

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

POSIX richiede che i programmi di Coreutils delimitino i caratteri correttamente anche in localizzazioni di tipo multibyte. La patch seguente corregge questa non conformità e altri bug legati all'internazionalizzazione:

patch -Np1 -i ../coreutils-5.96-i18n-1.patch

Affinché siano superati i test aggiunti da questa patch, devono essere modificati i permessi per il file di test:

chmod +x tests/sort/sort-mb-tests
[Nota]

Nota

Nel passato sono stati trovati molti bug in questa patch. Prima di riportare nuovi bug ai maintainer di Coreutils, controllare se siano riproducibili senza questa patch.

Si è scoperto che a volte i messaggi tradotti generano un buffer overflow nel comando who -Hu. Aumentare la dimensione del buffer:

sed -i 's/_LEN 6/_LEN 20/' src/who.c

Ora preparare Coreutils per la compilazione:

./configure --prefix=/usr

Compilare il pacchetto:

make

La suite di test di Coreutils fa numerose assunzioni circa la presenza di utenti e gruppi di sistema che non sono valide all'interno dell'ambiente minimale esistente al momento. Pertanto si dovranno eseguire dei passi aggiuntivi prima di eseguire i test. Se si decide di non eseguire i test, saltare a «Installazione del pacchetto».

Creare due gruppi dummy e un utente dummy:

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

Ora la suite di test è pronta per essere eseguita. Dapprima avviare alcuni test pensati per essere eseguiti come root:

make NON_ROOT_USERNAME=dummy check-root

Quindi eseguire i rimanenti test come utente dummy:

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

Una volta terminati i test, rimuovere utente e gruppi dummy:

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

Installare il pacchetto:

make install

Spostare i programmi nelle locazioni specificate dal 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

Alcuni degli script nel pacchetto LFS-Bootscripts dipendono da head, sleep e nice. Poiché /usr potrebbe non essere disponibile durante le prime fasi di avvio, questi binari devono essere sulla partizione di root:

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

6.14.2. Contenuti di Coreutils

Programmi installati: 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 e yes

Brevi descrizioni

basename

Toglie ogni percorso e ogni suffisso specificato dai nomi dei file

cat

Concatena file allo standard output

chgrp

Cambia il gruppo di appartenenza di file e directory

chmod

Cambia i permessi di ciascun file nella modalità specificata. La modalità può essere sia una rappresentazione simbolica dei cambiamenti da apportare, sia un numero ottale che rappresenti i nuovi permessi

chown

Cambia utente e/o gruppo proprietari di file e directory

chroot

Esegue un dato comando con la directory specificata come directory /

cksum

Stampa il checksum CRC (Cyclic Redundancy Check) e il numero dei byte di ciascun file specificato

comm

Confronta due file ordinati, stampando su tre colonne le linee che sono univoche, e le linee che sono comuni

cp

Copia i file

csplit

Divide un dato file in più file nuovi, separandoli secondo pattern o numeri di linee specificati e visualizzando il numero dei byte di ciascun nuovo file

cut

Stampa parti di linee, selezionando le parti in accordo con i campi o le posizioni richieste

date

Visualizza l'orario corrente nel formato indicato, o definisce la data di sistema

dd

Copia un file usando il numero e la dimensione di blocco indicato, opzionalmente può anche apportarci delle conversioni

df

Riporta l'ammontare di spazio di disco disponibile (e usato) su tutti i file system montati, o solo sui file system contenenti i file indicati

dir

Elenca i contenuti di ciascuna directory specificata (come il comando ls)

dircolors

Invia comandi per impostare la variabile ambiente LS_COLOR e cambiare lo schema di colore usato da ls

dirname

Toglie il suffisso non-directory dal nome di un file

du

Riporta l'ammontare dello spazio di disco utilizzato dalla directory corrente, da ciascuna delle directory specificate (includendo tutte le sottodirectory) o da ciascuno dei file indicati

echo

Visualizza le stringhe specificate

env

Esegue un comando in un ambiente modificato

expand

Converte tabulazioni in spazi

expr

Valuta espressioni

factor

Stampa i fattori primi di tutti i numeri interi specificati

false

Non fa nulla, senza successo. Esce sempre con un codice di stato che indica l'errore

fmt

Riformatta i paragrafi nei file specificati

fold

Racchiude le linee nei file specificati

groups

Riporta il gruppo di appartenenza di un utente

head

Stampa le prime dieci linee (o il numero di linee indicato) di ciascun file specificato

hostid

Riporta l'identificatore numerico (in esadecimale) dell'host

hostname

Riporta o imposta il nome dell'host

id

Riporta l'effettivo ID utente, ID gruppo e gruppo di appartenenza dell'utente corrente o di un utente specificato

install

Copia file, mentre definisce i loro permessi e, se possibile, il loro proprietario e gruppo

join

Unisce le linee che hanno campi unione identici da due file separati

link

Crea un link fisico con il nome specificato ad un file

ln

Crea link fisici o simbolici tra file

logname

Riporta il nome di login dell'utente corrente

ls

Elenca il contenuto di ciascuna directory specificata

md5sum

Riporta o verifica i checksum MD5 (Message Digest 5)

mkdir

Crea directory con il nome specificato

mkfifo

Crea FIFO (First-In, First-Out), una «named pipe» in gergo UNIX, con i nomi specificati

mknod

Crea nodi di dispositivo con i nomi specificati; un nodo di dispositivo è un file speciale a caratteri, o un file speciale a blocchi, o un FIFO

mv

Sposta o rinomina file o directory

nice

Esegue un programma con la priorità di scheduling modificata

nl

Numera le linee dei file specificati

nohup

Esegue un comando non interrompibile, con output rediretto a un file di log

od

Mostra i file in ottale e in altri formati

paste

Unisce i file specificati, unendo in sequenza le linee corrispondenti l'una all'altra, separate da caratteri tab

pathchk

Controlla se i nomi di file sono validi o portabili

pinky

È un client finger leggero; riporta alcune informazioni sugli utenti specificati

pr

Impagina e incolonna i file per la stampa

printenv

Stampa l'ambiente

printf

Stampa gli argomenti specificati secondo il formato specificato, in modo molto simile alla funzione printf del C

ptx

Genera un indice permutato del contenuto dei file specificati, con ciascuna parola chiave nel suo contesto

pwd

Riporta il nome della directory di lavoro corrente

readlink

Riporta il valore di un link simbolico specificato

rm

Rimuove file o directory

rmdir

Rimuove directory, se sono vuote

seq

Stampa una sequenza di numeri con un dato range e un dato incremento

sha1sum

Stampa o verifica il checksum 160-bit Secure Hash Algorithm 1 (SHA1)

shred

Sovrascrive ripetutamente i file specificati con pattern complessi, per rendere difficile il recupero dei dati

sleep

Pausa per uno specifico ammontare di tempo

sort

Ordina le linee dei file specificati

split

Divide il file specificato in parti, per dimensione o per numero di linee

stat

Visualizza lo stato del file o del filesystem

stty

Imposta o restituisce le impostazioni della riga di terminale

sum

Stampa il checksum e conteggia i blocchi di ciascun file specificato

sync

Svuota i buffer del file system; forza sul disco i blocchi modificati e aggiorna il super block

tac

Concatena e visualizza al contrario i file specificati

tail

Stampa le ultime dieci linee (o il dato numero di linee) di ciascun file specificato

tee

Legge dall'input standard, mentre scrive sia sull'output standard, sia nei file specificati

test

Confronta valori e verifica tipi di file

touch

Cambia data e ora del file, impostando l'ora di accesso e modifica dei file specificati con l'ora attuale; i file che non esistono sono creati con lunghezza zero

tr

Traduce, estrae e cancella i caratteri specificati dall'input standard

true

Non fa nulla, con successo; esce sempre con un codice di stato che indica successo (vero)

tsort

Esegue un ordinamento topologico; scrive una lista completamente ordinata in accordo con l'ordinamento parziale di un file specificato

tty

Riporta il nome del file del terminale connesso all'input standard

uname

Riporta informazioni di sistema

unexpand

Converte spazi in tabulazioni

uniq

Scarta tutte le linee identiche consecutive tranne una

unlink

Rimuove il file specificato

users

Riporta i nomi degli utenti attualmente connessi al sistema

vdir

È identico a ls -l

wc

Riporta il numero di linee, parole e byte per ciascun dato file e il totale di linee quando viene specificato più di un file

who

Riporta chi è connesso al sistema

whoami

Riporta il nome utente associato con l'attuale effettivo ID utente

yes

Emette ripetutamente «y» o una data stringa fino a quando non viene interrotto