Répertoires d'installation sous Linux

Sous Linux il existe plusieurs répertoires d’installation. Les installations automatiques avec synaptic, apt ou aptitude permettent aux logiciels d’utiliser automatiquement le bon répertoire. Mais quand il faut faire un choix manuel ou quand il faut soi-même compiler un logiciel, quel est le bon répertoire d’installation à choisir ?

Le répertoire /usr

Le répertoire /usr est l’abréviation de Unix Sytem Ressources (et non pas de user). Ce répertoire appartient à root et seul ce dernier peut y installer ou y compiler un logiciel. Ce répertoire contient la sous arborescence suivante :

/usr
├── bin
├── games
├── include
├── lib
├── local
│ ├── bin
│ ├── etc
│ ├── games
│ ├── include
│ ├── lib
│ ├── man -> share/man
│ ├── sbin
│ ├── share
│ └── src
├── sbin
├── share
└── src

On remarquera que le sous répertoire /local reproduit la même arborescence que son répertoire parent /usr. Ce sous répertoire appartient également à root et, sur Debian notamment, au groupe staff qui possède les droits rws sur ce répertoire.

[root@server:~]# ls -la /usr
total 56
drwxr-xr-x 10 root root 4096 oct. 10 2012 .
drwxr-xr-x 23 root root 4096 mars 24 2015 ..
drwxr-xr-x 2 root root 20480 janv. 13 17:31 bin
drwxr-xr-x 2 root root 4096 juin 17 2012 games
drwxr-xr-x 30 root root 4096 déc. 22 17:26 include
drwxr-xr-x 43 root root 4096 janv. 13 17:31 lib
drwxrwsr-x 11 root staff 4096 oct. 4 2014 local ←←←←←
drwxr-xr-x 2 root root 4096 janv. 13 17:31 sbin
drwxr-xr-x 84 root root 4096 mars 24 2015 share
drwxr-xr-x 2 root root 4096 juin 17 2012 src

Le droit s minuscule indique que ce répertoire possède le droit d’exécution, soit x et le droit setGID signifiant que tous les fichiers créés dans ce répertoire appartiendront au groupe staff. Cela permettrait à un autre administrateur (qui n’est pas root mais qui est dans le groupe staff) de s’occuper uniquement de l’installation/configuration des logiciels sur cette machine.

Note : Si un fichier de même nom se trouve à la fois dans /usr et dans /usr/local, le système choisira automatiquement celui présent dans /usr/local.

Le sous répertoire /usr/bin

Dans /usr/bin se trouvent les logiciels (les binaires) installés proprement en ligne de commande avec apt-get,apt, aptitude ou via le gestionnaire de paquets.

Le sous répertoire /usr/local

Dans /usr/local se trouve (de préférence) tous les logiciels compilés manuellement. (D’où l’importance de bien éditer le makefile en spécifiant les bonnes options)

Les logiciels présent dans ce répertoire sont accessibles pour tous les utilisateurs. Dans ce répertoire les applications vont respecter la même hiérarchie que sous /usr (/bin``, /share/applications, /share/icons, /etc`). Même compilés à la main, les logiciels (le binaire et ses ressources) seront installés proprement, dans les endroits logiques et bien identifiés.

Hiérarchie de /usr/local (noter la présence d’un répertoire /etc) :

/usr/local
├── /bin
├── /etc
├── /games
├── /include
├── /lib
├── /man -> share/man
├── /sbin
├── /share
└── /src

Le répertoire /usr/local n’est pas affecté par les mises à jour avec les commandes apt-get, aptitude ou via le gestionnaire de paquet (si bien sûr ce dernier ne contient que des logiciels compilés manuellement).

Répertoire /home/user/.local

Dans le fichier caché /home/un_user/.local se trouvent les logiciels installés par l’utilisateur un_user. Ce dossier est organisé de la même manière que /usr/local.

Les exécutables sont dans /.local/bin, le chemin est indiqué dans la variable d’environnement PATH.
Ce dossier n’est pas toujours présent, il suffit de le créer :

# mkdir ~/.local

Répertoire /opt

Dans le répertoire /opt il n’y a par contre pas de règle, les logiciels s’y trouvant sont organisés selon leur configuration. Ce répertoire peut très vite devenir anarchique.

Note : Certains logiciels proposent leur installation dans /usr/le_logiciel. Il serait éventuellement préférable de l’installer dans /opt puis de créer un lien vers /usr.

Exemples :

Firefox (ici installé via la commande apt-get) s’est placé dans /usr/bin

|patate@linux|~:$ ls -la /usr/bin/fi*
...
-rwxr-xr-x 1 root root 23599 mars 27 2014 /usr/bin/find2perl
lrwxrwxrwx 1 root root 25 déc. 10 11:46 /usr/bin/firefox -> ../lib/firefox/firefox.sh
-rwxr-xr-x 1 root root 14440 févr. 7 2013 /usr/bin/fitstopnm
...

En faisant un apt-cache policy :

|patate@linux|~:$ apt-cache policy firefox
firefox:
Install\u00e9\u00a0: 45.0+build2-0ubuntu0.14.04.1
Candidat\u00a0: 45.0+build2-0ubuntu0.14.04.1
Table de version\u00a0:
*** 45.0+build2-0ubuntu0.14.04.1 0
500 http://fr.archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 Packages
100 /var/lib/dpkg/status
28.0+build2-0ubuntu2 0
500 http://fr.archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages

Chrome (installé via le gestionnaire) s’est par contre placé à la fois dans /opt/google/chrome/

|patate@linux|~:$ ls -la /opt/google/chrome/
total 138444
drwxr-xr-x 6 root root 4096 déc. 20 15:41 .
drwxr-xr-x 3 root root 4096 oct. 17 15:10 ..
-rwxr-xr-x 1 root root 97447728 déc. 11 02:59 chrome
-rw-r--r-- 1 root root 1012136 déc. 11 02:59 chrome_100_percent.pak
-rw-r--r-- 1 root root 1391346 déc. 11 02:59 chrome_200_percent.pak
...

Ainsi que dans /usr/bin/ .On remarquera qu’il s’agit d’un lien symbolique vers /opt/google ansi que vers /etc.

|patate@linux|~:$ ls -la /usr/bin/google-chr*
lrwxrwxrwx 1 root root 31 oct. 24 11:57 /usr/bin/google-chrome -> /etc/alternatives/google-chrome
lrwxrwxrwx 1 root root 32 mars 8 01:24 /usr/bin/google-chrome-stable -> /opt/google/chrome/google-chrome

Par contre en faisant un apt-cache policy :

|patate@linux|~:$ apt-cache policy google-chrome
N: Impossible de trouver le paquet google-chrome

Note sur l’utilisation de Apt, Aptitude et Synaptic

1 - Quand on installe un .deb, c’est dpkg (programme qui se charge d’installer, supprimer et fournir des informations sur les packages) qui se charge d’ouvrir l’archive puis de placer les bons fichiers au bon endroit.
2 - Le gestionnaire de paquet de Debian est APT (Advanced Packaging Tool). Son rôle est de conserver une liste des paquets installés sur le système et de gérer leurs dépendances pour maintenir l’ensemble dans un état coordonné et stable.
3 - Aptitude ou Synaptic ne sont que des sur-couches utilisant APT, ils font appel lors de la phase de manipulation du paquet à dpkg.

> Partager <