Pourquoi devrais-je tout déplacer dans / opt?

16

Chaque fois que je lis les conseils d'installation d'un SDK, d'un IDE, d'une extension et ainsi de suite, il est dit que je devrais les déballer dans un /optdossier. Pourquoi dois-je faire ça?

Lorsque j'installais Ubuntu, j'ai lu que je ne devais définir que 10-20 Gio pour le /système de fichiers et l'espace restant pour /home. Dois-je donc étendre l'espace pour le dossier racine ou laisser toutes les choses sur /home? Y a-t-il une différence?

Praytic
la source
1
Vous avez deux questions ici. Une seule question par article est autorisée. Veuillez modifier votre message et si vous le souhaitez, vous pouvez poster une autre question concernant la taille ou le dossier de départ
Sergiy Kolodyazhnyy

Réponses:

20

Tout d'abord, sachez que tout répertoire qui n'est pas explicitement un point de montage pour une partition distincte (ou un sous-répertoire d'un tel point de montage) est stocké sur la /partition root ( ). Ainsi, si vous avez root ( /) et /home, et aucune autre partition, votre /optrépertoire est simplement un répertoire sur root ( /). De même pour /tmp, /sbinet toute autre chose. Ainsi, la question initiale est basée sur la fausse prémisse selon laquelle vous avez besoin de partitions distinctes pour chaque répertoire qui dérive de root ( /), et ne peut donc pas être répondu directement.

Deuxièmement, /optest utilisé pour les logiciels tiers, ce qui dans le contexte d'Ubuntu, signifie des logiciels précompilés qui ne sont pas distribués via les paquets Debian. Parfois, vous verrez la documentation officielle du programme à laquelle vous vous référez /opt, mais des paquets Debian sont disponibles qui déposent ces fichiers ailleurs. Dans de tels cas, vous devez ignorer la documentation officielle, ou au moins ignorer ses références d'emplacement de fichier, lorsque vous utilisez le paquet Debian. De plus, si vous avez le choix d'utiliser un paquet précompilé via un tarball ou un paquet Debian, il est généralement préférable d'utiliser le paquet Debian. Dans l'ensemble, l'utilisation de /optest assez rare de nos jours. Si vous pensez toujours que vous devez y mettre des fichiers /opt, vous feriez bien de nommer le logiciel, car les gens d'ici peuvent savoir si un paquet Debian est disponible pour ce logiciel.

Enfin, en combinant les deux points précédents, il est très rare que les installations Ubuntu se séparent /opten une partition distincte car il est rare que des quantités importantes de données y soient stockées. La plupart des logiciels Ubuntu vont dans /usret à d'autres endroits. Il était autrefois courant de se diviser /usren une partition distincte, mais cette pratique est assez rare aujourd'hui. Si vous ne vous arrive d'avoir besoin d'installer de nombreux logiciels /opt, puis en créant une partition séparée pour elle pourraitlogique - mais dans de nombreux cas, cela ne sera pas vraiment utile. Des partitions distinctes sont utiles si vous devez gérer la sécurité différemment, si différentes fonctionnalités du système de fichiers seront utiles, pour partager des données entre plusieurs installations de système d'exploitation dans une configuration à démarrage multiple, et pour d'autres raisons. L'installation de logiciels de routine ne bénéficiera probablement pas d'une partition distincte; en fait, la création d'une partition distincte pour /optpourrait causer des problèmes si la taille consommée par les logiciels qui y sont stockés change, ou si vous vous trompez au départ.

Rod Smith
la source
1
La réutilisation de / opt est assez rare de nos jours "Êtes-vous sûr?
Pacerier
@Pacerier pour une raison quelconque / opt semble faire son retour, / usr / local était certainement plus populaire dans Ubuntu il y a quelques années. En tout cas, à mon humble avis, / opt et / usr / local sont équivalents. Voir aussi linuxjournal.com/magazine/pointcounterpoint-opt-vs-usrlocal et tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html "Ces jours-ci, '/ usr / local' est largement considéré comme un bon endroit dans lequel conserver des programmes auto-compilés ou tiers. "
Panther
8

Le faites vous?

Le fait est que vous n'avez pas besoin de le faire. L'utilisation /optest une convention. Je recommanderais de l'utiliser mais ce n'est pas strictement nécessaire.

De la hiérarchie du système de fichiers Linux: Chapitre 1. Hiérarchie du système de fichiers Linux :

1.13. /opter

Ce répertoire est réservé à tous les logiciels et packages de modules complémentaires qui ne font pas partie de l'installation par défaut. Par exemple, les packages StarOffice, Kylix, Netscape Communicator et WordPerfect se trouvent normalement ici. Pour se conformer au FSSTND, toutes les applications tierces doivent être installées dans ce répertoire. Tout package à installer ici doit localiser ses fichiers statiques (c'est-à-dire des polices supplémentaires, des cliparts, des fichiers de base de données) doit localiser ses fichiers statiques dans une arborescence de répertoires / opt / 'package' ou / opt / 'provider' distincte (similaire à la manière dans lequel Windows installera un nouveau logiciel dans sa propre arborescence de répertoires C: \ Windows \ Progam Files \ "Program Name"), où 'package' est un nom qui décrit le package logiciel et 'provider' est le nom enregistré LANANA du fournisseur.

Bien que la plupart des distributions négligent de créer les répertoires / opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib et / opt / man, ils sont réservés à un administrateur système local. Les packages peuvent fournir des fichiers "frontaux" destinés à être placés (par liaison ou copie) dans ces répertoires réservés par l'administrateur système, mais doivent fonctionner normalement en l'absence de ces répertoires réservés. Les programmes à appeler par les utilisateurs se trouvent dans le répertoire / opt / 'package' / bin. Si le package comprend des pages de manuel UNIX, elles se trouvent dans / opt / 'package' / man et la même sous-structure que / usr / share / man doit être utilisée. Les fichiers de package qui sont variables doivent être installés dans / var / opt. Les fichiers de configuration spécifiques à l'hôte sont installés dans / etc / opt.

En aucun cas, aucun autre fichier de package ne doit exister en dehors des hiérarchies / opt, / var / opt et / etc / opt, à l'exception des fichiers de package qui doivent résider à des emplacements spécifiques dans l'arborescence du système de fichiers pour fonctionner correctement. Par exemple, les fichiers de verrouillage de périphérique dans / var / lock et les périphériques dans / dev. 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.

L'utilisation de / opt for add-on software est une pratique bien établie dans la communauté UNIX. L'interface binaire d'application System V [AT&T 1990], basée sur la définition d'interface System V (troisième édition) et la norme de compatibilité binaire Intel v. 2 (iBCS2) prévoit une structure / opt très similaire à celle définie ici.

Généralement, toutes les données requises pour prendre en charge un package sur un système doivent être présentes dans / opt / 'package', y compris les fichiers destinés à être copiés dans / etc / opt / 'package' et / var / opt / 'package' ainsi que répertoires réservés dans / opt. Les restrictions mineures sur les distributions utilisant / opt sont nécessaires car des conflits sont possibles entre la distribution installée et les logiciels installés localement, en particulier dans le cas de chemins d'accès fixes trouvés dans certains logiciels binaires.

La structure des répertoires ci-dessous / opt / 'provider' est laissée au packager du logiciel, bien qu'il soit recommandé que les packages soient installés dans / opt / 'provider' / 'package' et suivent une structure similaire aux directives pour / opt / package. Une raison valable pour s'écarter de cette structure est pour les packages de support qui peuvent avoir des fichiers installés dans / opt / 'provider' / lib ou / opt / 'provider' / bin.

Torrien
la source
C'est étrange, car la plupart des gens recommandent de séparer un petit espace dans le répertoire racine et je pensais que cela ne changerait pas beaucoup. Il semble que je dois rappeler à ces conseils de suivre les conventions?
Praytic
2
@Praytic Pas vraiment. Dans le passé, /optc'était souvent un lecteur séparé. Il serait utilisé pour installer des logiciels propriétaires, qui avaient souvent d'énormes besoins en espace disque en raison du regroupement de toutes les bibliothèques et autres ressources requises. Dans les temps modernes, les disques sont si gros qu'il est possible et plus facile d'utiliser simplement une racine unique sur un seul disque.
bain
4

/optest utilisé pour des applications externes (parfois propriétaires) qui ne sont pas considérées comme faisant partie de la distribution Linux. Ces applications peuvent avoir des chemins codés en dur et ne fonctionneront donc correctement qu'une fois installées sur /opt- mais s'il n'y a pas de chemins codés en dur, vous pouvez les installer sur n'importe quel chemin. Un programme installé dans /optest censé être autonome.

La principale raison de l'utilisation /optest de fournir un chemin standard commun où les logiciels externes peuvent être installés sans interférer avec le reste du système installé. /optn'apparaît pas dans les chemins standard du compilateur ou de l'éditeur de liens ( gcc -print-search-dirsou /etc/ld.so.confetc.), donc les en-têtes et les bibliothèques qui y sont installés sont quelque peu isolés du système principal et ne devraient pas interférer avec les programmes déjà installés.

L'utilisation de /optest spécifiée par la norme de hiérarchie du système de fichiers : / opt , qui note qu'elle /optprovenait à l'origine d'Unix.

/ opt: progiciels d'application complémentaires

Objectif

/ opt est réservé à l'installation de progiciels d'application complémentaires.

Un package à installer dans / opt doit localiser ses fichiers statiques dans une arborescence de répertoires / opt / <package> ou / opt / <provider> distincte, où <package> est un nom qui décrit le package logiciel et <provider> est le nom enregistré LANANA du fournisseur.

Exigences

Les répertoires / opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib et / opt / man sont réservés à l'administrateur système local. Les packages peuvent fournir des fichiers "frontaux" destinés à être placés (par liaison ou copie) dans ces répertoires réservés par l'administrateur système local, mais doivent fonctionner normalement en l'absence de ces répertoires réservés.

Les programmes à invoquer par les utilisateurs doivent se trouver dans le répertoire / opt / <package> / bin ou sous la hiérarchie / opt / <provider>. Si le package comprend des pages de manuel UNIX, elles doivent être situées dans / opt / <package> / share / man ou sous la hiérarchie / opt / <provider>, et la même sous-structure que / usr / share / man doit être utilisée.

Les fichiers de package qui sont variables (changement en fonctionnement normal) doivent être installés dans / var / opt. Voir la section sur / var / opt pour plus d'informations.

Les fichiers de configuration spécifiques à l'hôte doivent être installés dans / etc / opt. Voir la section sur / etc pour plus d'informations.

Aucun autre fichier de package ne peut exister en dehors des hiérarchies / opt, / var / opt et / etc / opt, à l'exception des fichiers de package qui doivent résider à des emplacements spécifiques dans l'arborescence du système de fichiers pour fonctionner correctement. Par exemple, les fichiers de verrouillage de périphérique doivent être placés dans / var / lock et les périphériques doivent être situés dans / dev.

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.

Raisonnement

L'utilisation de / opt for add-on software est une pratique bien établie dans la communauté UNIX. L'interface binaire d'application System V [AT&T 1990], basée sur la définition d'interface System V (troisième édition), prévoit une structure / opt très similaire à celle définie ici.

La norme de compatibilité binaire Intel v. 2 (iBCS2) fournit également une structure similaire pour / opt.

Généralement, toutes les données requises pour prendre en charge un package sur un système doivent être présentes dans / opt / <package>, y compris les fichiers destinés à être copiés dans / etc / opt / <package> et / var / opt / <package> ainsi que répertoires réservés dans / opt.

Les restrictions mineures sur les distributions utilisant / opt sont nécessaires car des conflits sont possibles entre les logiciels installés et installés localement, en particulier dans le cas des chemins d'accès fixes trouvés dans certains logiciels binaires.

La structure des répertoires ci-dessous / opt / <provider> est laissée au packager du logiciel, bien qu'il soit recommandé que les packages soient installés dans / opt / <provider> / <package> et suivent une structure similaire aux directives pour / opt / package. Une raison valable pour s'écarter de cette structure est pour les packages de support qui peuvent avoir des fichiers installés dans / opt / <provider> / lib ou / opt / <provider> / bin.

bain
la source
3

Il n'y a rien de sacré /opt, c'est juste une pratique courante de mettre des logiciels précompilés qui devraient être accessibles à tous les utilisateurs d'un système dans ce répertoire. Si vous êtes le seul utilisateur du système, il n'y a rien de mal à l'extraire dans votre répertoire personnel. Et même s'il y a plusieurs utilisateurs sur le système qui ont besoin d'accéder à ce logiciel mais que vous souhaitez utiliser l'espace sur votre /homepartition, il n'y a rien de mal à créer un /home/softwarenamerépertoire accessible au public et à y extraire votre logiciel (la seule mise en garde est si vous arrive pour avoir un utilisateur nommé softwarename, vous ne pourrez pas l'utiliser dans le répertoire personnel de l'utilisateur).

fkraiem
la source
2

Les réponses détaillées sont très bonnes, mais (à part les logiciels qui peuvent avoir des chemins absolus codés en dur - pas la meilleure pratique de programmation), le point principal est que les logiciels non-système / non-distribution ne doivent pas être stockés mélangés avec le fichiers système standard.

Mettre /optou /usr/localgarder les choses propres et plus sûres.

En particulier, votre chemin de recherche de logiciels ($ PATH) détermine l'ordre dans lequel les emplacements sont recherchés lorsque vous recherchez un programme d'un nom particulier à exécuter. Habituellement, des endroits comme /optet /usr/localsont vers la fin de la liste.

Si vous installez un package cpcontenant un programme nommé , l'ordre de recherche par défaut fourni avec votre distribution trouvera celui normal car le répertoire dans lequel il est stocké est recherché avant des endroits comme /opt.

Si cela n'a pas fonctionné de cette façon, qui sait ce qui pourrait casser ou ouvrir un trou de sécurité si un programme nommé cpqui fait autre chose est exécuté lorsque vous pensez que vous essayez simplement de copier certains fichiers.

Si quelque chose comme cela se produit, cela peut prendre un certain temps avant que quelqu'un ne pense à exécuter une commande comme type cp(ce qui pourrait même ne pas être suffisant pour montrer que quelque chose ne va pas) pour découvrir que ce qui est exécuté n'est pas ce que vous pensez que c'est. Jusque-là, vous êtes coincé à "Tout est exactement comme ça devrait être mis à part le petit détail qu'il ne fonctionne pas!"

Il aide essentiellement à empêcher les événements inattendus et évite également les situations où les mises à jour du système peuvent supprimer ou remplacer tout ou partie de vos packages installés "personnalisés". Ou, au contraire, certains programmes "personnalisés" peuvent remplacer les programmes fournis par le système sur lesquels de nombreux autres programmes ou scripts peuvent s'appuyer.

D'un point de vue administratif, le mélange de programmes / fichiers "système" et "facultatifs" dans les mêmes emplacements place votre système dans un état "non défini" ou au moins "ambigu".

Si vous avez un problème avec votre système ou un programme et avez besoin d'aide, l'une des premières questions qui vous est posée est "Qu'avez-vous changé?" et "Pouvons-nous désactiver temporairement certains de tous ces changements afin que nous sachions que nous examinons le vrai problème et pas seulement un symptôme d'autre chose."

Avec des emplacements séparés, ces changements peuvent être rapidement identifiés et tout ce que vous avez à faire (au moins pour les programmes eux-mêmes) est de supprimer temporairement leurs répertoires du chemin.

Joe
la source