1.17. /usr

/usr di solito contiene, in assoluto, la maggior parte dei dati presenti in un sistema. È perciò una delle directory più importanti del sistema, dato che contiene tutti i file binari (eseguibili) dell'utente, la loro documentazione, le librerie, gli header file etc... In questa directory si trova X con le librerie di supporto e anche i programmi utente come telnet, ftp etc... Nell'implementazione Unix originale in /usr venivano collocate le directory di home degli utenti (in altre parole, /usr/qualcuno era la directory oggi nota come /home/qualcuno). Nei sistemi Unix attuali /usr è la posizione dove si trovano i programmi e i dati ad uso dell'utente (in contrapposizione ai programmi e ai dati ad uso del sistema). Il nome è rimasto invariato ma il suo significato è passato da "tutto ciò che è relativo all'utente" a "programmi e dati utilizzabili dall'utente". Così si può dare ora a questa directory il significato di "User System Resources" e non quello di "user" come originariamente inteso.


/usr può essere condivisa, e contiene dati di sola lettura. Questo vuol
dire che /usr deve poter essere condivisa fra diversi host conformi al FHS
e non può avere i permessi di scrittura. Le informazioni specifiche 
per l'host o che variano nel tempo sono archiviate altrove.

I grandi pacchetti software non devono usare una propria sottodirectory
direttamente sotto la gerarchia /usr.

/usr/X11R6

Qui inizia un'altra grande struttura di sottodirectory, che contiene librerie, eseguibili, documenti, font e molto altro relativo al X Window System. La sua inclusione qui è piuttosto illogica e così pure la differenza fra le directory "/usr" e "/usr/X11R6". Si potrebbe ritenere che solamente i programmi da eseguire sotto X abbiano i propri file sotto la gerarchia "/usr/X11R6", mentre gli altri utilizzino "/usr". Purtroppo non è così. KDE e GNOME mettono i propri file sotto la gerarchia "/usr", mentre il window manager Window Maker usa "/usr/X11R6". I file della documentazione di X11R6 non sono in "/usr/X11R6/doc", ma principalmente in "/usr/X11R6/lib/X11/doc". Questa confusione è dovuta al fatto che, al contrario di altri sistemi operativi, il desktop grafico non è parte integrante del sistema. Linux è ancora usato principalmente sui server, dove i sistemi grafici non hanno senso.

Questa gerarchia è riservata alla versione 11 release 6 del X Window System, e ai relativi file. Per semplificare le cose e rendere XFree86 più compatibile col X Window System su altri sistemi, devono essere presenti i seguenti collegamenti simbolici, se esiste la directory /usr/X11R6:


  /usr/bin/X11 -> /usr/X11R6/bin
  /usr/lib/X11 -> /usr/X11R6/lib/X11
  /usr/include/X11 -> /usr/X11R6/include/X11

In generale, il software non dev'essere installato o gestito attraverso questi collegamenti simbolici, che son fatti solo per essere utilizzati dagli utenti. La difficoltà è connessa alla versione dell'X Window System; nei periodi di transizione è impossibile sapere la release di X11 in uso.

/usr/X11R6/bin

I binari del sistema XFree86, necessari per l'inizializzazione, la configurazione e l'esecuzione del sistema a finestre X. X, xf86config, xauth, xmodmap e anche xpenguin si trovano in questa directory.

/usr/X11R6/include

I file d'intestazione (header files) del sistema XFree86, richiesti per la compilazione di alcune applicazioni che utilizzano X.

/usr/X11R6/lib

Le librerie del sistema XFree86.

/usr/X11R6/lib/modules

I moduli del sistema XFree86. Sono i moduli che X carica all'avvio; senza questi moduli le estensioni video4linux, DRI e GLX e i driver per certi dispositivi di ingresso smetterebbero di funzionare.

/usr/X11R6/lib/X11/fonts

I font del sistema XFree86. Font che sono utilizzati da "xfs" (X Font Server) e dai programmi della stessa famiglia.

/usr/bin

Questa directory contiene la stragrande maggioranza dei file binari presenti nel sistema. Gli eseguibili in questa directory variano ampiamente; per esempio, vi, gcc, gnome-session e mozilla si trovano tutti in questa directory.

/usr/doc

La directory per la documentazione principale. In realtà la documentazione si trova in /usr/share/doc, e /usr/doc è un collegamento a questa directory.

/usr/etc

In teoria è un'altra directory per i file di configurazione; ora virtualmente in disuso.

/usr/games

Una volta questa directory conteneva i file dei giochi in rete; ora è usata raramente.

/usr/include

La directory per i file d'intestazione ("header files"), necessari per compilare il codice sorgente nello spazio utente.

/usr/include/"nome-pacchetto"

I file d'intestazione specifici dell'applicazione relativa.

/usr/info

Questa directory viene usata per contenere i file del sistema di documentazione info. Ora si trovano in "/usr/share/info".

/usr/lib

Questa directory contiene librerie di programmi. Le librerie sono raccolte di procedure di programma usate di frequente.

/usr/local

L'idea originale che stava alla base di "/usr/local" era quella di avere una directory ("local") "/usr", oltre a "/usr", separata su ogni macchina, che poteva essere montata in sola lettura da qualche altra parte. Questa directory copia la struttura di "/usr". Oggi "/usr/local" è considerata comunemente come una buona posizione dove tenere i programmi autocompilati o quelli di terze parti. La gerarchia /usr/local è destinata all'uso da parte dell'amministratore del sistema quando installa del software localmente. Dev'essere preservata dalla sovrascrittura durante l'aggiornamento del software di sistema; può essere usata per programmi e dati in condivisione tra un gruppo di host, ma che non si trovano in /usr. Il software installato localmente dev'essere messo all'interno di /usr/local piuttosto che nella directory /usr, a meno che non venga installato per sostituire o aggiornare un software presente in /usr.

/usr/man

Un tempo conteneva le pagine man; ora è stato spostato in /usr/share/man.

/usr/sbin

Questa directory contiene programmi per l'amministrazione del sistema; dev'essere eseguito dall'utente "root". Come "/sbin", non fa parte della variabile $PATH dell'utente. Esempi di binari inclusi in questa directory sono chroot, useradd, in.tftpd e pppconfig.

/usr/share

Questa directory contiene i file indipendenti dall'architettura che possono essere condivisi, (documenti, icone, font etc). Si noti comunque che "/usr/share" generalmente non è fatta per essere condivisa fra diversi sistemi operativi o fra diverse release del medesimo sistema operativo. Ogni programma o pacchetto che contiene, o richiede, dati che non hanno bisogno di essere modificati dovrebbe archiviare quei dati in "/usr/share" (o "/usr/local/share", se è installato localmente). Per questo scopo si raccomanda l'uso di una subdirectory in /usr/share."

/usr/share/doc

Posizione dei file della documentazione dei singoli pacchetti. Queste directory contengono spesso informazioni utili che potrebbero non essere contenute nelle pagine man. Possono contenere anche modelli e file di configurazione per certi programmi di utilità, rendendo la configurazione molto più facile.

/usr/share/info

Posizione delle pagine "info". Questo tipo di documentazione ora sembra essere largamente ignorato. Le pagine di manuale godono di un maggior apprezzamento.

/usr/share/man

Le pagine di manuale. Sono organizzate in 8 sezioni, che sono descritte di seguito.


man1: Programmi utente
In questa sezione sono contenute le pagine di manuale che descrivono i
comandi accessibili a tutti. La maggior parte della documentazione dei
programmi che servono all'utente si trova in questa directory.

man2: Chiamate di sistema
Questa sezione descrive tutte le chiamate di sistema (richieste al 
kernel per eseguire operazioni).

man3: Funzioni di libreria e subroutine
La sezione 3 descrive le procedure della libreria di programmi che
non sono chiamate dirette ai servizi del kernel. Questa sezione
e la sezione 2 sono di interesse solo per i programmatori.

man4: File speciali
La sezione 4 descrive i file speciali, le funzioni relative ai driver,
e il supporto di rete disponibile nel sistema. Generalmente include
i file di dispositivo che si trovano in /dev e l'interfaccia del kernel
per il supporto del protocollo di rete.

man5: Formati di file
I formati per molti file di dati sono documentati nella sezione 5.
Questa sezione comprende diversi "include file", file di output dei
programmi e file di sistema.

man6: Giochi
Questa sezione documenta i giochi, programmi dimostrativi, e
programmi di intrattenimento in generale.
Ognuno ha un'opinione differente sulla necessità di questa sezione.

man7: Le pagine di manuale diverse non facilmente classificabili sono
indicate come appartenenti alla sezione 7. Le pagine di manuale di Troff
e di  altri pacchetti di macro per l'elaborazione del testo si trovano
in questa sezione.

man8: Amministrazione del sistema
I programmi usati dagli amministratori di sistema per il funzionamento
e la manutenzione del sistema sono documentati in questa sezione. Alcuni 
di questi programmi, occasionalmente, sono utili anche per gli utenti
comuni.

/usr/src

La sottodirectory "linux" contiene i sorgenti del kernel Linux, i file d'intestazione (header-files) e la documentazione.

/usr/src/RPM

RPM fornisce una sottostruttura per creare i pacchetti RPM a partire dai sorgenti SRPM. L'organizzazione di questa sezione è piuttosto logica poiché i pacchetti sono organizzati secondo l'architettura del pacchetto.

/usr/src/RPM/BUILD

Un archivio temporaneo per i file binari RPM compilati dal codice sorgente.

/usr/src/RPM/RPMS/athlon, /usr/src/RPM/RPMS/i386, /usr/src/RPM/RPMS/i486, /usr/src/RPM/RPMS/i586, /usr/src/RPM/RPMS/i686, /usr/src/RPM/RPMS/noarch

Queste directory contengono i file sorgenti RPM che dipendono dall'architettura.

/usr/src/RPM/SOURCES

Questa directory contiene i file sorgenti nel formato TAR, le patch e le icone per il software da pacchettizzare.

/usr/src/RPM/SPECS

I file SPEC RPM. Un file SPEC è un file che contiene informazioni e script necessari per creare un pacchetto.

/usr/src/RPM/SRPMS

Contiene i file sorgenti RPM risultanti dalla compilazione.

/usr/src/linux

Contiene il codice sorgente del kernel Linux.

/usr/src/linux/.config

L'ultima configurazione del kernel. Questo file generalmente viene creato durante le fasi di compilazione del kernel: "make config", "make menuconfig" o "make xconfig".

/usr/src/linux/.depend, /usr/src/linux/.hdepend

"make dep" verifica le dipendenze dei componenti selezionati durante la creazione del file .config. Controlla che i file richiesti possano essere trovati e crea una lista da utilizzare durante la compilazione. Se questo processo va a buon fine vengono creati questi due file.

/usr/src/linux/COPYING

La Licenza GNU

/usr/src/linux/CREDITS

[Riconoscimenti] Un elenco parziale di persone che hanno contributo al progetto Linux. È ordinato per nome e formattato in modo da poter essere consultato facilmente con grep e con script che migliorano la leggibilità del testo. I campi sono: nome (N), indirizzo email (E), indirizzo web (W), ID della chiave PGP e fingerprint (P), descrizione (D), indirizzo di posta (S).

/usr/src/linux/MAINTAINERS

Elenco dei manutentori del kernel e istruzioni su come proporre modifiche al kernel.

/usr/src/linux/Makefile

Contiene i dati necessari per la compilazione di un kernel funzionante. Permette agli sviluppatori e agli utenti finali di compilare un kernel con pochi semplici passaggi (cioè make dep, make clean, make bzImage, make modules, make modules_install) e anche di non doversi preoccupare di ricompilare tutto da zero se parti di esso sono state già compilate e sono da aggiornare.

/usr/src/linux/README

Queste sono le note di rilascio per la versione 2.4 di Linux. Devono essere lette con attenzione poiché contengono tutte le informazioni che servono, spiega come installare il kernel, e le cose da fare in caso di errori.

/usr/src/linux/REPORTING-BUGS

Una procedura consigliata per notificare i bachi di Linux. Non è d'obbligo usare il formato del "bug reporting", viene fornita come guida per un tipo di informazione che può essere utile agli sviluppatori; niente di più.

/usr/src/linux/Rules.make

Questo file contiene regole condivise fra diversi Makefile.

/usr/src/linux/Documentation

Contiene la documentazione che può essere necessaria per ricompilare un kernel. Fornisce comunque anche molte informazioni sul sistema Linux in generale. Per ulteriori informazioni sul contenuto di questa directory si può consultare il file /usr/src/linux/Documentation/00-INDEX. Inoltre si può trovare una documentazione più dettagliata in /usr/src/linux/Documentation/Docbook. Naturalmente i contenuti di questa directory sono scritti nel formato Docbook ma possono essere convertiti nei formati pdf, ps o html usando i target di make, rispettivamente "pdfdocs", "psdocs" e "htmldocs".

/usr/tmp

File temporanei dello spazio utente. Questa directory non è presente nelle distribuzioni moderne; molto probabilmente fu creata perché ereditata in Linux da UNIX.