Coreutils-5.2.1

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

Tempo approssimativo di costruzione:  0.9 SBU
Spazio necessario sul disco:     69 MB

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

Installazione di Coreutils

Normalmente il funzionamento di uname è difettoso, poiché lo switch -p ritorna sempre “unknown”. La patch seguente corregge questo comportamento per le architetture Intel:

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

Non vogliamo che Coreutils installi la sua versione del programma hostname, poiché è inferiore alla versione fornita da Net-tools. Prevenite la sua installazione applicando la seguente patch:

patch -Np1 -i ../coreutils-5.2.1-hostname-1.patch

Ora preparate Coreutils per la compilazione:

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

Compilate 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 dovremo impostare un po' di cose prima di poter avviare i test. Se decidete di non eseguire i test, saltate a “Installate il pacchetto”.

Per poter eseguire tutta la suite di test, il programma su deve essere installato. Non ci siamo preoccupati di installare questo piccolo programma nel Capitolo 5 perché richiede privilegi di root, così fatelo ora:

make install-root

Create una tabella dei file system montati con:

touch /etc/mtab

E create due gruppi e nomi utenti dummy (fittizi n.d.t.):

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

Ora avete tutto pronto per eseguire la suite di test. Dapprima avviate alcuni test pensati per essere eseguiti come root:

export NON_ROOT_USERNAME=dummy; make check-root

Quindi avviate i rimanenti test come utente dummy:

su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"

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

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

Installate il pacchetto:

make install

E spostate 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,install,ln,ls} /bin
mv /usr/bin/{mkdir,mknod,mv,pwd,rm,rmdir,sync} /bin
mv /usr/bin/{sleep,stty,su,test,touch,true,uname} /bin
mv /usr/bin/chroot /usr/sbin

Useremo il programma kill dal pacchetto Prcps (installato come /bin/kill più avanti nel capitolo). Rimuovete quello installato da Coreutils:

rm /usr/bin/kill

Infine, create due link simbolici per la conformità a FHS:

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

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, su, sum, sync, tac, tail, tee, test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, uptime, users, vdir, wc, who, whoami e 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 avvia un dato comando con la directory specificata come / directory. Il comando dato può essere una shell interattiva. Su molti sistemi questo può essere fatto solo da root.

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 rispettando i dati pattern o numeri di linee e visualizzando il conteggio dei byte di ciascun nuovo file.

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

date visualizza l'orario corrente nel dato formato od imposta 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 è uguale a ls.

dircolors invia comandi per impostare 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 la stringa data.

env esegue un comando in un ambiente modificato.

expand converte le 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 fallimento.

fmt riformatta i paragrafi nei file secificati.

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 imposta 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 imposta 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 crea link fisici o simbolici tra file.

logname riporta il nome di login dell'utente corrente.

ls elenca il contenuto di ciascuna directory specificata. Come impostazione predefinita ordina file e sottodirectory alfabeticamente.

md5sum riporta o verifica i checksum MD5 (Message Digest 5).

mkdir crea directory con il nome specificato.

mkfifo crea FIFO (First-In, First-Out, un tipo di stack) con i nomi dati.

mknod crea nodi di dispositivo con i nomi specificati. Un nodo di dispositivo è un speciale file caratteri, uno speciale file a blocchi o un FIFO.

mv sposta o rinomina files o directory.

nice avvia un programma con la priorità di scheduling modificata.

nl numera le linee dei file specificati.

nohup avvia un comando non interrompibile, con output rediretto a un file di log.

od riversa 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 SHA1.

shred sovrascrive ripetutamente i file specificati con pattern casuali, per rendere difficile il recupero dei dati.

sleep pausa di 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.

stty setta o riporta i settaggi della linea terminale.

su avvia una shell sostituendo ID utente e gruppo.

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, impostando 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 di un file specificato rispettando l'ordinamento parziale.

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 successive tranne una.

unlink rimuove un dato file.

uptime riporta da quanto tempo sta funzionando il sistema, quanti utenti vi hanno acceduto e il carico medio del sistema.

users riporta i nomi degli utenti attualmente connessi al sistema.

vdir è uguale a 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 è loggato al sistema.

whoami riporta il nome utente associato con l'attuale effettivo ID utente.

yes emette 'y' o una data stringa ripetutamente, fino a quando viene interrotto.