6.15. Coreutils-5.2.1

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

Tempo approssimativo di costruzione: 0.9 SBU

Spazio su disco richiesto: 69 MB

L'installazione di Coreutils dipende da: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Perl, Sed

6.15.1. Installazione di Coreutils

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

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

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

patch -Np1 -i \
    ../coreutils-5.2.1-suppress_uptime_kill_su-1.patch

Ora preparare Coreutils per la compilazione:

DEFAULT_POSIX2_VERSION=199209 ./configure --prefix=/usr

Compilare il pacchetto:

make

La suite di test di Coreutils fa numerose assunzioni circa la presenza di file ed utenti che non sono validi in questa prima fase della costruzione di LFS. Pertanto si dovranno definire un po' di cose prima di poter avviare i test. Se si decide di non eseguire i test, saltare a “Installazione del pacchetto”.

Creare due gruppi dummy e uno user name dummy:

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

Ora è tutto pronto per eseguire la suite di test. 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 alcuni programmi nelle loro giuste locazioni:

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

Infine, creare un link simbolico per essere conformi a FHS:

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

6.15.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, and yes

Brevi descrizioni

basename

Toglie suffissi e directory dai nomi dei file.

cat

Concatena file allo standard output.

chgrp

Cambia il gruppo di appartenenza di ogni dato file assegnando il gruppo specificato. Il gruppo può essere sia un nome che in ID numerico.

chmod

Cambia i permessi di ciascun file, assegnando i permessi specificati. 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 un dato file assegnando la coppia utente:gruppo specificati.

chroot

Esegue un dato comando con la directory specificata come directory /.

cksum

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

comm

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

cp

Copia file.

csplit

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

cut

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

date

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

dd

Copia un file usando il conteggio e la dimensione di blocco indicato, mentre, opzionalmente, può apportare delle conversioni in esso.

df

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

dir

Elenca i contenuti di ciascuna directory specificata (Uguale a ls).

dircolors

Invia comandi per settare la variabile ambiente LS_COLOR, per cambiare lo schema colore usato da ls.

dirname

Toglie il suffisso non-directory da un dato nome file.

du

Riporta l'ammontare di spazio disco utilizzato dalla directory corrente, o da ciascuna delle date directory includendo tutte le loro sottodirectory, o da ciascuno dei file dati.

echo

Visualizza le stringhe date.

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. Emette sempre un codice di stato che indica fallimento.

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 dato numero di linee) di ciascun file specificato.

hostid

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

hostname

Riporta o setta il nome dell'host.

id

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

install

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

join

Unisce da due file le linee che hanno campo di unione identico.

link

Crea un link fisico con il nome specificato verso il file specificato.

ln

Fa 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 dati nomi.

mknod

Crea nodi di dispositivo con i nomi specificati. Un nodo di dispositivo è uno speciale file caratteri, o uno speciale file 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 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 finger leggero. Riporta informazioni sugli utenti specificati.

pr

Impagina e incolonna i file per la stampa.

printenv

Visualizza l'ambiente.

printf

Stampa i dati argomenti secondo il formato specificato (un po' come la 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 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 casuali, per rendere difficile il recupero dei dati.

sleep

Pausa per uno specifico ammontare di tempo.

sort

Ordina le linee del file specificato.

split

Divide il file specificato in parti, di dimensione o numeri di linee specificati.

stat

Visualizza lo stato del file o filesystem

stty

Setta o riporta i settaggi della linea terminale.

sum

stampa checksum e conteggia i blocchi di ciascun file specificato.

sync

Svuota i buffer del file system. Forza la modifica sul disco dei blocchi modificati e aggiorna il super block.

tac

Concatena al contrario i file specificati.

tail

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

tee

Legge dallo standard input e contemporaneamente scrive sullo standard output e nei file specificati.

test

Confronta valori e verifica tipi di file.

touch

Cambia data e ora del file, settando le ore di accesso e modifica dei file specificati all'ora corrente. I file che non esistono sono creati con lunghezza zero.

tr

Traduce, estrae e cancella i caratteri specificati dallo standard input.

true

Non fa nulla, con successo. Esce sempre con un codice di stato che indica successo.

tsort

Esegue un ordinamento topologico. Scrive una lista totalmente ordinata in accordo con l'ordinamento parziale di un file specificato.

tty

Riporta il nome del file del terminale connesso allo standard input.

uname

Riporta informazioni di sistema.

unexpand

Converte spazi in tabulazioni.

uniq

Scarta tutte le linee identiche consecutive tranne una.

unlink

Rimuove un dato file.

users

Riporta i nomi degli utenti attualmente connessi al sistema.

vdir

Lo stesso di ls -l.

wc

Riporta il numero di linee, parole e byte per ciascun dato file, e un totale 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 viene interrotto.