Panoramica sull'FHS

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 la partizione /usr come partizione in sola lettura (perché contiene file eseguibili comuni e non va modificata dagli utenti). /usr può essere montato dal CD-ROM o da un'altra macchina tramite NFS in sola lettura.

Organizzazione dell'FHS

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

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.

La directory /etc

La directory /etc è riservata ai file locali del 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 o possibilmente in /bin.

Le directory X11 e skel devono essere sotto-directory di /etc:

/etc
  |- X11
  |- skel

La directory X11 contiene i file di configurazione di X11, come per esempio XF86Config. La directory skel contiene i file di base per gli utenti, cioè i file che vengono copiati automaticamente nelle directory home quando viene creato un nuovo utente.

La directory /lib

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

La directory /mnt

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

La directory /opt

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

Per i pacchetti che vogliono evitare di posizionare i file attraverso il 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 pacchetto particolare.

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, avranno così un modo standardizzato di organizzarsi. Per esempio, il pacchetto sample può avere diversi tool appartenenti ognuno alla propria sotto-directory come /opt/sample/tool1 e /opt/sample/tool2, ognuno di questi può avere il proprio bin, man e altre directory simili.

La directory /sbin

La directory /sbin contiene gli eseguibili utilizzati solo dall'utente root, tra cui quelli necessari per avviare, montare e ripristinare il filesystem. 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 /usr (quando non si sono verificati problemi) deve essere collocato in /usr/sbin. I comandi per l'amministrazione locale del sistema devono essere inseriti in /usr/local/sbin."

In /sbin potete trovare i seguenti programmi:

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

La directory /usr

La directory /usr contiene tutti i file condivisi nello stesso calcolatore. La directory /usr ha solitamente una partizione dedicata e dovrebbe essere montata in sola lettura. Di seguito viene mostrata la struttura della partizione /usr:

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

La directory bin contiene gli eseguibili, doc 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).

La directory /usr/local

L'FHS dice:

"La directory /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
       |- info
       |- lib
       |- man
       |- sbin
       |- src

La directory /var

Da quando FHS permette al sistema di montare /usr in sola lettura, è necessario che i file di sistema delle directory di spool e quelle di lock siano memorizzati in /var. L'FHS in riferimento a /var dice:

"…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
  |- arpwatrch
  |- cache
  |- db
  |- ftp
  |- gdm
  |- kerberos
  |- lib
  |- local
  |- lock
  |- log
  |- named
  |- nis
  |- opt
  |- preserve
  |- run
  +- spool
       |- anacron
       |- at
       |- cron
       |- fax
       |- lpd
       |- mail
       |- mqueue
       |- news
       |- rwho
       |- samba
       |- slrnpull
       |- squid
       |- up2date
       |- uucp
       |- uucppublic
       |- vbox
       |- voice
  |- tmp
  |- www
  |- yp

I file di log del sistema, come messages e lastlog si trovano nella directory /var/log. La directory /var/lib contiene 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.

/usr/local in Red Hat Linux

Nei sistemi Red Hat Linux, l'uso della directory /usr/local è leggermente diverso da quello specificato dall'FHS. L'FHS dice che in /usr/local va memorizzato il software non interessato agli aggiornamenti del sistema. Poiché gli aggiornamenti di Red Hat vengono effettuati con il sistema RPM e Gnome-RPM, 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 di montare /usr via NFS in sola lettura da un host chiamato jake. Se desiderate installare un pacchetto o un programma, ma non è permesso scrivere su jake, potrete comunque installarlo sotto /usr/local. Nel paragrafo seguente dovrete cercare di convincere l'amministratore di sistema di jake a installare il programma su /usr, voi potrete disinstallarlo da /usr/local.