Devrais-je installer des applications Linux dans / var ou / opt?

83

Je lance beaucoup d'applications open source, y compris java et tomcat. Il semble que la plupart des instructions utilisent mes applications à partir du /varrépertoire. Mais de temps en temps, je vois aussi le /optrépertoire. Tant que j'y suis, je vois aussi /usr/local/et même /etcaussi.

Quand devrais-je installer des applications dans un dossier ou dans l'autre? Y at-il des avantages et des inconvénients de chacun? Cela a-t-il un rapport avec l'historique de la saveur (Solaris vs Linux ou Red Hat vs Ubuntu)?

Trevor Allred
la source
8
/ etc est un endroit étrange et inapproprié pour laisser des applications ...
user5336
J'ai vu des gens mettre des éléments dans / etc, comme des modules Perl. C'est bizarre, mais ça arrive ...
aphink
6
Pour chaque absurdité, il y a un champion pour le défendre.
Womble

Réponses:

133

La norme pour ces problèmes est la norme de hiérarchie des fichiers . C'est un document plutôt gros. En gros (et très grossièrement), les chemins standard sous Linux sont:

  • /bin& /sbinsont des programmes vitaux pour le système d'exploitation, sbin étant réservé aux administrateurs;
  • /usr/bin& /usr/sbinsont destinés à des programmes non vitaux, sbin étant réservé aux administrateurs;
  • /varest pour les données vivantes pour les programmes. Il peut s'agir de données en cache, de données de spool, de données temporaires (sauf si elles /tmpsont effacées, ce qui est effacé à chaque redémarrage), etc.
  • /usr/localest pour les programmes installés localement. En règle générale, il héberge des programmes conformes aux normes mais non empaquetés pour le système d'exploitation, mais installés manuellement par l'administrateur (à l'aide, par exemple ./configure && make && make install), ainsi que des scripts administrateur.
  • /optest pour les programmes qui ne sont pas empaquetés et ne suivent pas les normes. Vous venez de mettre toutes les bibliothèques là avec le programme. C'est souvent une solution rapide et sale, mais elle peut également être utilisée pour des programmes créés par vous-même et pour lesquels vous souhaitez avoir un chemin spécifique. Vous pouvez créer votre propre chemin (par exemple /opt/yourcompany) à l'intérieur de celui-ci, et dans ce cas, vous êtes encouragé à l'enregistrer comme faisant partie des chemins standard.
  • /etc ne devrait pas contenir de programmes, mais plutôt de configurations.

Si vos programmes sont spécifiques aux services fournis par le service, cela /srvpeut également être un bon emplacement pour eux. Par exemple, je préfère utiliser /srv/wwwpour les sites Web plutôt que /var/wwwpour m'assurer que le répertoire ne contiendra que les données que j'ai ajoutées moi-même, et rien qui provient de packages logiciels.

Il y a quelques différences entre les distributions. Par exemple, les systèmes RedHat utilisent des libexecrépertoires , contrairement aux systèmes Debian / Ubuntu.

Le FHS est principalement utilisé par les distributions Linux (en fait, je ne connais aucun autre système d’exploitation qui le respecte). Les autres systèmes Unix ne le suivent pas. Par exemple, les systèmes BSD ont tendance à être utilisés /usr/localpour les programmes empaquetés, ce qui n’est pas le cas sous Linux. Solaris a des chemins standard très différents.

Je vous encourage fortement à lire le document FHS que j'ai lié ci-dessus si vous souhaitez en savoir plus à ce sujet.

ℝaphink
la source
1
Une des rares listes de
puces que
6
+1 pour /srv. Je cherchais une place pour mes dépôts git et je n’aimais pas que mon contenu Apache soit dans /var/www. /srvsemble être l'endroit idéal.
M. Hérisson
@ ℝaphink, pourquoi est-il appelé varau lieu de data?
Pacerier
@ Mr.Hedgehog, qu'entendez-vous par "n'aime pas"? Soin d'expliquer?
Pacerier
@Pacerier Dans les années 90, on vous dirait que c'est /varparce que c'est pour "diverses données". Au début, Unix était hébergé sur un seul lecteur. Quand cela ne suffisait pas, ils en ont obtenu un nouveau, l'ont monté en tant que /usret y ont transféré toutes les données utilisateur. Mais ce n’était pas suffisant et l’ancien disque était bientôt plein. Ils ont donc déplacé tous les fichiers binaires sur lesquels le système ne pouvait pas démarrer du /binau /usr/bin. Ils manquent simplement d'espace. Plus tard, ils ont eu besoin de partager des données entre utilisateurs afin de pouvoir les /varutiliser et les utiliser comme boîte de dépôt. FHS est plein de décisions héritées comme celle-ci et devrait être pris avec une pincée de sel.
cprn
4

optsignifie logiciel optionnel. varreprésente les fichiers système variables. Par conséquent, vos applications doivent aller à /opt.

Eduard Wirch
la source
8
/varest pour divers fichiers système, pas "divers".
Womble
4
/ var est pour "fichiers de données variables". Dire que c'est pour «divers fichiers système» est ambigu et potentiellement trompeur. o_O Tu as raison sur "opt" cependant.
phoenix8
@ Eduard, qu'en est-il de / opt / var alors? Et </ usr / var>, </ usr / local / var> ...
Pacerier
@womble C'est une étymologie fausse. C'est ce que dit FHS mais ce n'est pas vrai. Dans les années 90, on vous dirait que c'est /varparce que c'est pour "diverses données". J'ai encore des notes d'un livre pré-Internet que j'ai lu à l'époque.
cprn
2

Cela dépend de votre norme locale.

Personnellement, je n'installe rien dans / var sans une bonne raison. Mon / usr / local est presque toujours un montage nfs hors réseau, de sorte que tout ce qui n'est pas empaqueté est installé dans / opt.

David Mackintosh
la source
1
Que mettriez-vous dans / var de toute façon, sauf les données?
Decaphink
1
généralement, les programmes vont coller leurs propres fichiers dans / var. Généralement fournis par les fournisseurs - journaux, certaines bibliothèques, fichiers de contrôle, fichiers .pid, ce genre de choses.
David Mackintosh
2
Je ne suis pas tout à fait d'accord. Les bibliothèques, si elles sont statiques, devraient entrer /usr. Pourraient se retrouver dans libs générées dynamiquement à l' /var/liboccasion, mais je ne vois pas ce que vous fait installer dans /var, à partir d' un point de vue admin. Le programme l’utilise peut-être beaucoup, mais il doit être vide avant de lancer le programme.
aphink
1
À l'heure actuelle, la seule chose que j'ai délibérément installée dans / var est nfsen / nfdump, car l'empreinte de l'application correspond à tous les fichiers nfdump qu'elle accumule. (Et parce que c'est une installation de test qui est parvenue à la production. Donc - "pour l'usage, pas de bonne raison"). Mais c'est à peu près tout. Bien sûr, puisque je ne partitionne pas mon disque dur, les fichiers / var, / opt et / usr sont tous sur le même système de fichiers.
David Mackintosh
1
Qmail s'installe dans / var. C'est l'une des nombreuses critiques à son encontre.
staticsan