Répertoires /usr et /usr/local

Bonjour,

J’aimerais éclaircir certains points avec ces deux répertoires. J’ai toujours, malgré plusieurs recherches, un doute sur le choix de leur utilisation.

Ce que j’ai trouvé :
/usr c’est ici qu’on installe les logiciels. - ok -
/usr/local c’est ici qu’on installe les logiciels sur la machine locale. - C’est à dire ? Je n’arrive pas bien à cerner la différence, l’utilité de ce répertoire d’installation par raport au répertoire /usr basique :neutral_face:

Je dois pas exemple installer Java sur un serveur Debian (qui possède déjà Apache), il permettrait de faire fonctionner des applets Java sur des sites Web.
Quelles seraient les différences entre une installation dans /usr et une installation dans /usr/local ?

Merci.

Vous écrivez

 /usr c'est ici qu'on installe les logiciels. - ok -
/usr/local c'est ici qu'on installe les logiciels sur la machine locale. - 

Il y a une profonde incompréhension de ce que c’est que la machine locale.
En règle générale, le système de fichiers /usr (avec des répertoires lib bin``sbin share …) est une partie intégrante du système, tel que proposé par la distribution. Il peut être dans une partition/un volume logique séparé du système racine / ou non (une seule partition montée sur /)
Ce qui veut dire que c’est bien sur la machine locale, sur un disque local, directement attaché (en principe, je ne pense pas qu’une configuration dite diskless pourrait vous intéresser).

L’arborescence /usr/local avec des répertoires lib bin … est utilisée pour indiquer que c’est l’administrateur local [*] qui gère cet espace, cela ne fait pas partie de la distribution et vous y mettez ce que vous voulez. Par exemple, un logiciel que vous compilez vous-même va normalement se retrouver dans /usr/local/bin D’ailleurs rien ne vous empêche de faire un chown récursif de l’arborescence /usr/local et ensuite d’installer sans même passer par sudo.

Un certain nombre de distributions ont déjà effacé la distinction de savoir si un binaire doit être dans /bin/ ou dans /usr/bin/ et de même pour /sbin et /usr/sbin

fp2x@drmas:~$ sudo which ip ifconfig  traceroute tracepath
/sbin/ip
/sbin/ifconfig
/usr/sbin/traceroute
/usr/bin/tracepath
fp2x@drmas:~$ l /sbin/ip /bin/ip
308 -rwxr-xr-x 1 root root 314560 sept.  5  2014 /bin/ip
  0 lrwxrwxrwx 1 root root      7 sept.  5  2014 /sbin/ip -> /bin/ip

sur une debian
et

fp2x@drhpcmpp:~> sudo which ip ifconfig  traceroute tracepath
/bin/ip
/sbin/ifconfig
/usr/sbin/traceroute
/usr/sbin/tracepath
fp2x@drhpcmpp:~> l /bin/ip
0 lrwxrwxrwx 1 root root 12  4 févr. 19:07 /bin/ip -> /usr/sbin/ip

sur SUSE Linux Enterprise Server 12
comme quoi, chaque distribution fait sa tambouille, mais ne touche pas à /usr/local en dehors de créer le répertoire à l’installation.

Je ne parle pas de /opt où c’est le gros bordel, en pratique c’est la foire aux produits commerciaux avec des répertoires comme intel ugs ou simulia compaq hp mais aussi pollué par certains logiciels libres compilés à la va comme je te pousse, souvent pour ubuntu comme pyvtk paraview314 … par des gens pour qui tout processeur est forcément compatible amd64 et paquet deb == je compile sous ubuntu.

Cordialement

Note
(*) Voyez, vous avez été promu administrateur de votre système. Vous devriez être content.

Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. (R. Devos)

Celui qui, parti de rien, n’est arrivé nulle part n’a de merci à dire à personne !!
Pierre Dac

2 J'aime

Bonjour

Dans /usr/local/ tu mets les programmes que tu compiles toi même et que tu installes pour tous les $user de l’ordinateur.

Tu pourrais les mettre ailleurs.

1 J'aime

Idem pour moi, c’est là que je mets mes scripts maison.

Merci @littlejohn75 pour toutes ces explications et toutes ces précisions !

@limax, @ricardo :

Dans /usr/local/ tu mets les programmes que tu compiles toi même et que tu installes pour tous les $user de l’ordinateur.

Ok, donc tout les autres utilisateurs auront accès aux logiciels installés (=compilés manuellement) ici.

Par contre si un simple utilisateur (qui n’a pas d’autorisations root) veut installer un logiciel que pour lui, ça se passe comment ?
Et même, si root veut installer un logiciel que pour un seul utilisateur ? Comment procéder ?

Merci

salut,
pour installer un programme sans les droits utilisateurs ou pour un seul utilisateur ça se passe un peu pareil sauf que c’est dans le fichier caché .local/ qui se trouve dans le répertoire de l’utilisateur (donc /home/user/.local, où user est à adapter en fonction du nom de l’utilisateur)

celui-ci est organisé de la même manière que son grand frère, avec un repertoire
/home/user/.local/bin /home/user/.local/share /home/user/.local/tmp
et ainsi de suite.
les executables sont dans .local/bin et qui est normalement dans la variable d’environnement PATH
L’utilisateur a les droits pour ecrire dedans (et y foutre le bordel)

1 J'aime

Merci pour ces précisions.