Capitolo 3. L'albero delle directory

Sommario
Premesse
La radice del filesystem
La directory /etc
La directory /dev
Il filesystem /usr
Il filesystem /var
Il filesystem /proc

" Due giorni dopo, c'era Pooh, seduto sul suo ramo, che faceva dondolare le gambe, e lì, vicino a lui, c'erano quattro vasi di miele..." (A.A. Milne)

Questo capitolo descrive le parti più importanti di un albero delle directory standard di Linux, basato sullo standard FSSTND per i filesystem; descrive come esso viene normalmente diviso in filesystem separati con scopi diversi, e spiega le motivazioni che stanno dietro questo modo di fare. Vengono descritti anche altri tipi di suddivisione.

Premesse

Questo capitolo è basato sullo standard dei filesystem Linux, FSSTND, versione 1.2 [LFS], che tenta di impostare uno standard per l'organizzazione dell'albero delle directory nei sistemi Linux. Uno standard del genere ha il vantaggio che è più facile scrivere o fare porting del software per Linux e amministrare le macchine Linux, dato che tutto si trova nel posto designato. Non c'è nessuna autorità che impone di uniformarsi allo standard, ma questo ha il supporto della maggior parte, se non di tutte, le distribuzioni Linux, quindi non è una buona idea discostarsi da esso se non per ragioni molto particolari. Il FSSTND tenta di seguire la tradizione Unix e le tendenze più recenti, rendendo i sistemi Linux familiari per chi ha esperienza con altri sistemi Unix e viceversa.

Questo capitolo non è dettagliato come il FSSTND, e gli amministratori di sistema dovrebbero leggere anche quello per avere una comprensione completa dell'argomento; inoltre non descrive tutti i file in dettaglio: lo scopo infatti è quello di dare una visione del sistema dal punto di vista del filesystem. Ulteriori informazioni sui singoli file possono essere trovate in altre parti di questo libro o nelle pagine man.

L'albero delle directory completo è concepito in modo che possa essere diviso in parti più piccole, ciascuna sulla sua partizione o nel suo disco, per ottimizzare le cose in dipendenza dalla dimensione dei dischi stessi e per rendere più semplice il backup ed il resto dell'amministrazione. Le parti principali sono i filesystem radice, /usr, /var e /home (vedere la Figura 3-1), e ciascuna ha uno scopo diverso. L'albero delle directory è stato strutturato in modo che funzioni bene in una rete di macchine Linux che condividano delle parti del filesystem su un dispositivo a sola lettura (ad esempio un CD-ROM), o sulla rete con NFS.

Figura 3-1. Parti di un albero delle directory Unix. Le linee tratteggiate indicano i limiti delle partizioni.

Descriviamo ora i ruoli delle diverse parti dell'albero delle directory.

Anche se le diverse parti sono state chiamate fino ad ora filesystem, non è richiesto che si trovino realmente su filesystem diversi; possono essere tenute sullo stesso se il sistema è piccolo e monoutente e si vogliono mantenere le cose semplici. L'albero delle directory può essere diviso in filesystem in modo diverso da quanto spiegato, a seconda di quanto sono grandi i dischi e di come lo spazio è allocato per i vari scopi. La parte importante, piuttosto, è che tutti i nomi importanti funzionino: anche se, ad esempio, /var e /usr sono in realtà sulla stessa partizione, i nomi /usr/lib/libc.a e /var/adm/messages devono funzionare; si possono ad esempio spostare i file sotto /var in /usr/var, e rendere /var un link simbolico a /usr/var.

La struttura dei filesystem Unix raggruppa i file a seconda del loro scopo, cioè tutti i comandi si trovano nello stesso posto, tutti i file di dati in un altro, la documentazione in un terzo e così via. Un'alternativa sarebbe raggruppare i file a seconda del programma a cui appartengono, cioè tutti i file di Emacs in una stessa directory, tutti quelli di TeX in un altra, eccetera. Il problema di quest'ultimo approccio è che rende difficile condividere i file (le directory dei programmi spesso contengono sia file statici che condivisibili, e sia file che cambiano che file che restano invariati) e spesso anche trovare dei file (ad esempio, le pagine man sarebbero in un numero enorme di posti e fare in modo che i programmi di lettura le possano trovare è l'incubo degli amministratori di sistema).