/ usr / local ou / opt?

44

Comment procédez-vous généralement pour vos installations de paquets sous Linux, pour les paquets qui ne font pas partie des dépôts de votre distrib?

De mon côté, je suis habitué à installer dans / opt. Mais depuis, j'ai vu ce document sur Internet: http://www.pathname.com/fhs/ . Maintenant, je suis confus: apparemment, / usr / local serait également une possibilité.

Quelle est la différence entre les deux? Des bonnes pratiques à partager?

Merci

SirFabel


la source
Territoire de la guerre sainte et pas vraiment un sujet de programmation pour démarrer.
dmckee
1
Question similaire dans Ask Ubuntu , super - utilisateur , unix et linux
dimanche

Réponses:

33
  • Tout ce qui doit être compilé et installé dans le style Unix et conforme à FHS ->/usr/local
  • Tout le reste (par exemple, une application Web Java fournie avec son propre serveur d'applications et des charges de ressources dans une archive zip -> /opt
lajuette
la source
lintian n'autorise plus les paquetages à être installés sur / opt ni / usr / local
Cristiano
24

À titre d’information intéressante supplémentaire: La signification originale de /usr/localest que si /usrest monté sur le réseau (unique /usrpartagé sur plusieurs ordinateurs), il /usr/locals’agirait d’un système de fichiers distinct local à l’ordinateur (partition sur le disque local).

Et même sur ce sujet, même si cela ne correspond pas à la question: s'il y a plusieurs ordinateurs avec des architectures différentes, il y en aurait naturellement un /usrpour chaque arch, mais il y /usr/shareaurait encore un autre système de fichiers séparé partagé entre les architectures (d'où un partage) .


la source
5
Non ... historiquement (oui, j'y étais!) / Usr et al avaient les éléments fournis par le fournisseur, / usr / local était installé localement (par exemple, bash, gcc et autres éléments intéressants).
vonbrand
@vonbrand Êtes-vous vraiment en train de contredire la réponse? On dirait que tout ce qui doit être partagé entre l'hôte serait / usr, et ce qui n'en aurait pas besoin aussi, serait dans / usr / local
Didier A.
@Didier A., ​​quand j'ai commencé à utiliser Unix (années 80), il n'y avait qu'une seule machine, pas de réseau ... et ils avaient / usr et / usr / local.
vonbrand
@vonbrand Oh je vois, intéressant. Ensuite, il semble que l’intention initiale d’avoir / usr et / usr / local reste un mystère.
Didier A.
@Didier A., ​​encore une fois: / usr était ce qui était livré avec le système d'exploitation, des trucs "standard", / usr / local était des ajouts locaux (homebrewed, débarqué de Usenet, importé d'un collègue lors d'une convention, ...) . Pas standard, juste usage commun.
vonbrand
7

La façon dont je le fais est que si cela nécessite un préfixe ou un paquet binaire, je choisis / opt (ce qui est à peu près la méthode Solaris). Si je compile à partir de la source / usr / local, c'est comme ça que je vais.

Lee
la source
6

J'ai tout mis dans un répertoire privé, puis j'utilise GNU stow .

Donc, je vais installer le paquet X.ver à /BASE/stow/X.ver. GNU Stow alors combiner tous les paquets (avec liens symboliques) dans /BASE/bin, /BASE/libetc.

Les conflits et la suppression de paquets sont beaucoup plus faciles à gérer.

R Samuel Klatchko
la source
J'ai généralement utilisé / usr / local / stow / <nom_package> pour héberger les "paquets" d'arrimage, et je pense que c'est une bonne pratique - si quelqu'un d'autre regarde dans / usr / local, il est évident que ce qui se passe et ce qui se passe système maintient les liens symboliques.
Stephanie
3

Voici comment j'interprète la norme FHS:

/ usr / local est destiné aux fichiers construits localement ou installés localement, qu'ils soient empaquetés ou non et qui font partie de cette instance du système d'exploitation.

/ opt est un emplacement pour installer des packages "étrangers" ne faisant pas partie du système d'exploitation.

Tant que vous n'utilisez que des fichiers sur le seul système où vous les construisez, / usr / local convient, et constitue donc le répertoire de base par défaut de la grande majorité des logiciels open source.

Si vous envisagez de redistribuer votre paquet, nous vous recommandons d'utiliser un répertoire de base personnalisé tel que / opt / myPackage.

jlliagre
la source
2

Solaris a beaucoup utilisé / opté. De nombreuses distributions Linux modernes attendent maintenant des paquets dans / usr / local /. L'idée est la même: créer un logiciel permettant à cette machine de faire ce qu'elle fait, contrairement au système d'exploitation. C'est à peu près analogue à "Program Files" sur un système Windows.

Choisissez-en un et respectez-le. Il est assez facile de faire un lien symbolique / opt to / usr / local.

Kyle Hodgson
la source
J'aime le commentaire de Lee, une belle façon de réfléchir au problème. Cela me semblerait un peu bizarre d’avoir un / opt sur une machine Debian, mais c’est probablement une préférence personnelle.
Kyle Hodgson
S'il vous plaît ne pas. FHS est peut-être un peu démodé, mais son raisonnement sur / usr vs / usr / local vs / opt est sain: Standard, distribution fournie; installé localement, comme du matériel homebrew ou expérimental en dehors de github; trucs non standard fournis par le vendeur.
vonbrand
0

Si vous recompilez un logiciel fourni par la distribution de votre système d'exploitation, utilisez / usr / local pour tirer parti de plusieurs avantages d'architecture spécifiques à votre propre machine.

Si vous ajoutez un logiciel provenant de sources autres que la distribution de votre système d'exploitation, mettez-le dans / opt.

cp7781
la source