3.2. Panoramica sull'FHS (Filesystem Hierarchy Standard)

Red Hat è fedele al Filesystem Hierarchy Standard (FHS), documento che definisce i nomi e la posizione di molti file e directory. Continueremo a seguire lo standard perché Red Hat Linux sia conforme all'FHS.

L'FHS corrente è il documento di riferimento per qualsiasi filesystem conforme all'FHS, ma lo standard lascia molte zone indefinite ed estensibili. In questa sezione viene fornita una panoramica sullo standard e una descrizione delle parti del filsystem non coperte dallo standard.

Lo standard completo è disponibile all'indirizzo:

http://www.pathname.com/fhs

La conformità con lo standard è molto importante, ma i due fattori fondamentali sono la compatibilità con altri sistemi conformi e la capacità di montare una partizione /usr come partizione in sola lettura perché contiene file eseguibili comuni e non va modificata dagli utenti. Poiché /usr è in sola lettura, può essere montata dal CD-ROM o da un'altra macchina tramite NFS in sola lettura.

3.2.1. Organizzazione dell'FHS

Le directory e i file qui menzionati rappresentano un piccolo sottoinsieme di quelli specificati dal documento FHS. Per informazioni più dettagliate, consultate l'ultimo documento dell'FHS.

3.2.1.1. La directory /dev

La directory /dev contiene voci del filesystem che rappresentano dispositivi collegati al sistema. Questi file sono essenziali perché il sistema funzioni correttamente.

3.2.1.2. La directory /etc

La directory /etc è riservata ai file locali di configurazione presenti sul vostro computer. Nessun file binario deve essere inserito in /etc. Tutti i file binari che sono stati precedentemente inseriti in /etc devono essere trasferiti in /sbin oppure in /bin.

Le directory X11 e skel sono sottodirectory di /etc:

/etc
  |- X11/
  |- skel/

La directory X11 contiene i file di configurazione di X11, come per esempio XF86Config. La directory /etc/skel/ contiene i file di base per gli utenti, cioè i file che servono per popolare una home directory quando viene creato un nuovo utente.

3.2.1.3. La directory /lib

La directory /lib contiene solo le librerie necessarie all'esecuzione dei file binari presenti in /bin e /sbin. Queste immagini di librerie condivise sono particolarmente importanti per l'avvio del sistema e l'esecuzione di comandi all'interno del filesystem di root.

3.2.1.4. La directory /mnt

La directory /mnt è riservata ai filesystem montati temporaneamente, come i CD-ROM e i dischetti floppy.

3.2.1.5. La directory /opt

La directory /opt fornisce un'area per la memorizzazione di pacchetti applicativi statici di grandi dimensioni.

Per evitare di inserire i file di un pacchetto nel filesystem, /opt fornisce un sistema organizzativo logico e prevedibile sotto la directory del pacchetto. In questo modo l'amministratore del sistema può facilmente determinare il ruolo di ogni file all'interno di un determinato pacchetto.

Per esempio, se sample è il nome di un pacchetto particolare all'interno di /opt, allora tutti i suoi file dovrebbero essere inseriti in /opt/sample. Per esempio /opt/sample/bin per i binari e /opt/sample/man per le pagine man.

Anche i pacchetti che comprendono più sotto-pacchetti, ognuno con un compito particolare, vanno inseriti in /opt e avranno così un modo standardizzato di organizzarsi. Per esempio, il pacchetto sample può avere diversi tool appartenenti ognuno alla propria sottodirectory come /opt/sample/tool1 e /opt/sample/tool2; ognuno di questi può avere la propria directory bin, man e altre directory simili.

3.2.1.6. La directory /proc

La directory /proc contiene "file" speciali che estraggono o inviano informazioni al kernel.

Data la svariata quantità di dati disponibili in /proc e i vari modi in cui questa directory può essere usata per comunicare con il kernel, è stato dedicato un intero capitolo all'argomento. Per maggiori informazioni, consultate il Capitolo 5.

3.2.1.7. La directory /sbin

La directory /sbin contiene gli eseguibili utilizzati unicamente dall'utente root. Gli eseguibili in /sbin servono solo ad avviare e a montare /usr e a eseguire operazioni di ripristino del sistema. L'FHS dice:

"/sbin contiene normalmente i file essenziali per l'avvio del calcolatore oltre a quelli presenti in /bin. Qualunque altro eseguibile di sistema utilizzato dopo il mount della directory /usr (quando non si sono verificati problemi) deve essere collocato in /usr/sbin. I file binari riservati all'amministrazione locale del sistema devono essere inseriti in /usr/local/sbin."

In /sbin trovate almeno i seguenti programmi:

arp, clock,
getty, halt,
init, fdisk,
fsck.*, grub,
ifconfig, lilo,
mkfs.*, mkswap,
reboot, route,
shutdown, swapoff,
swapon, update

3.2.1.8. La directory /usr

La directory /usr contiene tutti i file condivisi nello stesso calcolatore (o da una rete). La directory /usr ha solitamente una partizione dedicata e dovrebbe essere montata in sola lettura. Quelle riportate di seguito sono le sottodirectory che dovrebbero essere contenute in /usr:

/usr
  |- bin/
  |- dict/
  |- doc/
  |- etc/
  |- games/
  |- include/
  |- kerberos/
  |- lib/
  |- libexec/	    
  |- local/
  |- sbin/
  |- share/
  |- src/
  |- tmp -> ../var/tmp/
  |- X11R6/

La directory bin contiene gli eseguibili, dict contiene le pagine di documentazione non conformi a FHS, etc contiene i file di configurazione del sistema, games quelli per i giochi, include contiene i file header di C, kerberos contiene i binari e molte altre cose per Kerberos e lib contiene file oggetti e librerie che non sono stati concepiti per essere usati direttamente dagli utenti o dagli script della shell. La directory libexec contiene piccoli programmi di help richiamati da altri programmi, sbin è per i binari di amministrazione del sistema (quelli che non appartengono a /sbin), share contiene i file non specifici per l'architettura, src contiene i codici sorgenti e X11R6 serve per il sistema X Window (XFree86 in Red Hat Linux).

3.2.1.9. La directory /usr/local

L'FHS dice:

"La gerarchia /usr/local viene utilizzata dall'aministratore di sistema quando installa il software a livello locale. Prima che il software sia aggiornato deve essere effettuato un back up di questa directory. Può essere usato per i programmi e i dati che sono condivisibili con altri gruppi di host, ma che non si trovano in /usr."

La directory /usr/local ha una struttura simile alla directory /usr. Contiene le sottodirectory seguenti, che hanno uno scopo simile a quelle contenute nella directory /usr:

/usr/local
       |- bin/
       |- doc/
       |- etc/
       |- games/
       |- include/
       |- lib/
       |- libexec/
       |- sbin/
       |- share/
       |- src/

3.2.1.10. La directory /var

Poiché l'FHS richiede che siate in grado di montare /usr in sola lettura, tutti i programmi che scrivono file di log o necessitano delle directory spool o lock dovrebbero scriverli nella directory /var. L'FHS in riferimento a /var è per:

"…file di dati variabili. Questa directory contiene i file di spool, di amministrazione, di log e i file temporanei."

Le seguenti directory sono tutte sottodirectory di /var:

/var
  |- account/
  |- arpwatch/
  |- cache/
  |- crash/
  |- db/
  |- empty/
  |- ftp/
  |- gdm/
  |- kerberos/
  |- lib/
  |- local/
  |- lock/
  |- log/
  |- mail -> spool/mail/
  |- mailman/
  |- named/
  |- nis/
  |- opt/
  |- preserve/
  |- run/
  +- spool/
       |- anacron/
       |- at/
       |- cron/
       |- fax/
       |- lpd/
       |- mail/
       |- mqueue/
       |- news/
       |- rwho/
       |- samba/
       |- slrnpull/
       |- squid/
       |- up2date/
       |- uucp/
       |- uucppublic/
       |- vbox/
       |- voice/
  |- tmp/
  |- tux/
  |- www/
  |- yp/

I file di log del sistema, come messages e lastlog si trovano in /var/log. La directory /var/lib/rpm contiene anche i database del sistema RPM. I file lock si trovano in /var/lock, solitamente in directory particolari per il programma che usa il file. La directory /var/spool ha delle sottodirectory per vari sistemi che devono memorizzare file di dati.

3.2.2. /usr/local/ in Red Hat Linux

In Red Hat Linux, l'uso della directory /usr/local è leggermente diverso da quello specificato dall'FHS. L'FHS dice che /usr/local si dovrebbe trovare nel posto in cui è memorizato il software che non deve subire aggiornamenti del sistema. Poiché gli aggiornamenti di Red Hat vengono effettuati in modo sicuro con RPM e Strumento di gestione dei pacchetti, non dovete proteggere i file mettendoli in /usr/local. Invece, vi raccomandiamo di usare /usr/local per il software locale del vostro computer.

Per esempio, supponiamo che avete montato /usr tramite l'NFS in sola lettura da un host da un host remoto, é ancora possibile installare un pacchetto o un programma sotto la directory /usr/local/.