Pourquoi mon package a-t-il été installé dans / opt?

8

Il y a quelque temps, j'ai installé couchdb depuis la source sur ma machine Debian. Il semblait s'installer correctement et tout fonctionnait.

Quelques semaines plus tard, je voulais mettre à niveau et installer à partir d'un .deb en utilisant dpkg. Tout semble désormais avoir été installé sous /opt. Tout semble bien fonctionner, mais je ne comprends pas vraiment pourquoi tout est installé sous /opt. Cela ne semble pas aussi "fluide" que lorsque les choses ont été installées directement dans /usr/local/binet /etcet /var/log. La configuration est plus lourde que lorsque je venais de modifier les fichiers de configuration installés sous / etc / couchdb

Quelqu'un voudrait-il m'expliquer pourquoi l'installation de /opt"est une bonne chose" et pourquoi c'est une meilleure façon de faire les choses que l'installation précédente qui provenait de la source?

Je sais que c'est une question assez vague, mais je ne suis compétent qu'avec Linux, pas un expert et je ne comprends pas la pensée derrière l'installation de /opt

Mikel
la source
Peut-être qu'il manque une balise / debian?
D4RIO
Voulez-vous dire qu'un paquet Debian est installé dans / opt? Si c'est le cas, cela fait la mauvaise chose. J'ai également une application Google Chrome (non installée actuellement) qui est installée dans / opt. Tout ce qui est géré par le système de package doit aller dans le système principal.
Faheem Mitha
En regardant cela plus attentivement, je n'ai pas pu trouver une déclaration claire dans la politique selon laquelle l'installation du paquet Debian (qu'elle soit officielle ou non) ne devrait pas s'installer dans / opt, bien que j'ai la forte impression que cela ne devrait pas être fait, et là sont divers commentaires sur le net que le faire est la mauvaise chose. Si je trouve quelque chose de plus précis, je le posterai. AFAIK, Debian n'attend ni n'exige que les paquets non officiels soient installés à un endroit différent des paquets officiels.
Faheem Mitha

Réponses:

10

La norme de hiérarchie du système de fichiers donne ces définitions:

  • /opt : Logiciels d'application complémentaires
  • /usr/local : Hiérarchie locale (à utiliser par l'administrateur système lors de l'installation locale du logiciel)

La façon dont je lis cela:

  • Les applications système standard doivent entrer /binet /usr/bin(implicite)
  • Les packages tiers doivent entrer /opt
  • Quelque chose ne doit être installé que /usr/localsi l'administrateur système le souhaite

Par extension, si le sysadmin installe quelque chose en utilisant dpkgou rpm, il ne devrait pas y entrer /usr/localpar défaut.

Il fait donc sans doute la bonne chose.

Mikel
la source
Le serveur d'application Websphere d'IBM va dans / opt. De plus, lorsque j'installe quelque chose comme IBM JDK, je le mets dans / opt / java.
djangofan
5

La politique Debian dit

9.1.2 Programmes spécifiques au site

Conformément au mandat du FHS, les packages ne doivent pas placer de fichiers /usr/local, soit en les plaçant dans l'archive du système de fichiers à décompresser par dpkg, soit en les manipulant dans leurs scripts de maintenance.

Il n'existe aucune interdiction spécifique de ce type /opt. La politique ajoute également

L'emplacement de tous les fichiers et répertoires installés doit être conforme à la norme FHS (Filesystem Hierarchy Standard), version 2.3, avec les exceptions indiquées ci-dessous et sauf si cela violerait d'autres termes de la politique Debian.

et la norme de hiérarchie des fichiers dit

Les répertoires /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/libet /opt/mansont réservées à l' administrateur du système local.

puis plus bas

Les distributions peuvent installer des logiciels dans /opt, mais ne doivent pas modifier ou supprimer les logiciels installés par l'administrateur système local sans l'accord de l'administrateur système local.

Notez que la politique est pour Debian elle-même, mais elle correspond généralement à une recommandation de meilleure pratique. Le résultat, si je lis bien, est qu'il n'est pas correct d'installer des packages binaires (deb) /usr/local, mais qu'il est correct d'installer dans la /optmesure où cela n'interfère pas avec l'utilisation par l'administrateur système de l'espace.

Mon opinion personnelle est que c'est une mauvaise idée d'avoir des paquets deb dans /usr/localou /opt. Je ne suis pas d'accord avec D4RIO quand il dit:

Il y a un paquet Couchdb pour Debian (je veux dire, officiel), donc si vous en avez téléchargé un autre, c'est OK, il doit être installé dans /optou l' /usr/local/binun ou l' autre.

Généralement, vous ne voulez pas que deux packages deb différents correspondant au même logiciel soient installés, et s'ils sont en fait le même nom de package, dpkg ne le permettra pas de toute façon. Les paquets Debian non officiels de logiciels disponibles en tant que paquet officiel portent généralement (mais pas toujours) le même nom que les paquets officiels; vous installez simplement l'un ou l'autre, pas les deux.

Pour ce que ça vaut, je pense que mettre des paquets deb /optest une mauvaise idée, et la seule occurrence récente de cela que j'ai vue est avec Google Chrome. Cependant, Google ne suit pas toujours les meilleures pratiques.

Faheem Mitha
la source
Entièrement d'accord pour dire qu'un paquet ne doit pas être installé dans / opt, surtout s'il place des fichiers ailleurs aussi comme dans / usr / bin. Imho / opt devrait contenir un logiciel complètement autonome afin que vous puissiez le supprimer de l'orbite en le supprimant simplement de / opt.
Arrowmaster
D'accord, bonnes réponses merci, mais il est installé sur / opt par défaut. Si ce n'est pas le cas / opt, alors où dois-je l'installer? Et comment faire en utilisant dpkg?
@Duke: Si vous pouvez obtenir la source du paquet deb, vous pouvez reconstruire le deb pour l'installer dans le système comme des paquets normaux. Cela nécessitera un peu de travail si vous n'êtes pas déjà familier avec la procédure, mais imo c'est la bonne chose à faire ici.
Faheem Mitha
1
ne suis pas d'accord avec cette réponse. Il existe de nombreuses situations où vous souhaitez installer deux versions de logiciel, vous pouvez facilement vouloir un python spécifique pour une application spécifique. Un administrateur système local peut vouloir empaqueter ce python, où devrait-il aller? Le logiciel installé localement (make install) va dans / usr / local, le 3ème logiciel packagé va dans / opt / - la définition des paquets est large: via dpkg, via les installateurs, via PIP, via (insérer le système d'emballage de choix). J'accepte qu'il s'agit d'une bonne pratique de "fournisseur / packages" autonome.
ashwoods
4

/optest destiné aux logiciels tiers. Il y a un paquet couchdb pour debian (je veux dire, officiel), donc si vous en avez téléchargé un autre, c'est ok, il doit être installé dans /optou l' /usr/local/binun ou l' autre.

D4RIO
la source
2

Même s'il ne s'agit pas de Debian, les directives d'emballage de Fedora sont assez claires à ce sujet:

… Aucun paquet Fedora ne peut avoir de fichiers ou de répertoires sous / opt ou / usr / local…

La raison pour laquelle les packages ne mettent pas les choses dans / opt est assez simple: Comme cela a été souligné précédemment, la norme de hiérarchie des fichiers stipule que…

Les distributions peuvent installer des logiciels dans / opt, mais ne doivent pas modifier ou supprimer les logiciels installés par l'administrateur système local sans l'accord de l'administrateur système local.

C'est quelque chose qui ne peut pas être garanti par les packages car une installation ou une mise à jour peut modifier ces données.

Je sais que Fedora n'est pas Debian, mais je suppose que dans ce cas, ils sont assez similaires. D'autant plus que Lintian, l'outil de vérification des paquets pour Debian, a une erreur spéciale pour cela: dir-or-file-in-opt

Lars Kiesow
la source