Quel est l'emplacement d'installation conventionnel pour les applications sous Linux?

73

J'installe actuellement NetBeans et le répertoire d'installation par défaut est /home/thomasowens/netbeans-6.8. Je ne suis pas fan de cet endroit, donc je regarde /etc, /bin, /usr/binet /sbin. Est-ce que Linux a un emplacement qui, par convention, est identique au C:\Program Filesrépertoire Windows ?

Thomas Owens
la source

Réponses:

99

Selon la norme de hiérarchie du système de fichiers , plusieurs emplacements sont acceptables, en fonction de l'application. Je cite abondamment ici.

  • bin est l'abréviation de "binaire" bien sûr
  • sbin est l'abréviation de "serveur binaire", autrement défini comme:

    Utilitaires utilisés pour l'administration du système (et autres commandes uniquement root)

  • /usr est destiné aux données partageables en lecture seule et doit être partagé entre différents hôtes compatibles FHS (si vous avez beaucoup de machines sur votre réseau et qu'elles sont toutes de la même architecture, vous devriez pouvoir partager un seul dossier / usr avec chaque machine du réseau)

  • /usr/local est destiné à être utilisé par l'administrateur système lors de l'installation de logiciels localement (c'est-à-dire pour les applications installées uniquement sur cette machine et non sur toutes les machines du réseau).

Prenant ces ensemble:

  • /usr/bin est le répertoire principal des commandes exécutables sur le système.
  • /usr/sbin est destiné aux fichiers binaires non essentiels utilisés exclusivement par l'administrateur système.
  • Les programmes d'administration du système qui sont nécessaires à la réparation du système, la récupération du système, de montage / usr, ou d' autres fonctions essentielles doivent être placées à la /sbinplace ( à savoir les choses dont vous avez besoin pour accéder afin de monter /usr/sbinaller /sbin)
  • De même, les commandes utilisateur essentielles qui peuvent être nécessaires avant le /usrmontage vont dans/bin
  • Tout ce qui n’est installé que sur la machine locale doit aller /usr/local/binou/usr/local/sbin

Il y a une autre utilisation de / usr / local cependant. La plupart des choses que vous installez via le gestionnaire de paquets de votre distribution seront placées sous / usr; beaucoup de gens placent à la place les choses qu'ils ont compilées à la main dans / usr / local. Cela les tient à l'écart du système de gestion des paquets et vous permet de repérer ce que vous avez installé depuis la distribution (vous n'avez pas besoin de sauvegarder, car vous pouvez le récupérer à nouveau) et ce que vous avez compilé à la main. il vous permet également d’exécuter différentes versions en même temps (par exemple, / usr / bin / firefox vs / usr / local / bin / firefox).


Juste au moment où vous pensiez que les choses étaient réglées, il y a un autre endroit, qui est probablement l'équivalent le plus proche de c:\Program Files- /opt:

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

/optest probablement le plus proche équivalent à c:\program files, en ce qu'il est le seul endroit que vous attendez de trouver une application avec tous ses fichiers dans un seul dossier, plutôt que dispersés à travers /usr/bin, /varet /etc. Il n'est généralement utilisé que par de très gros paquets, mais dans ce cas, étant donné que Netbeans veut avoir son propre dossier, il est probablement plus logique de le placer sous / opt / netbeans.

James Polley
la source
3
intéressant. si j'avais conçu Linux, j'aurais placé les applications réseau partagées dans / usr / shared, puis les applications hôtes locales privées dans / usr. De cette façon, je pourrais partager / usr / shared sans aussi, par héritage, partager / usr.
djangofan
1
Vraiment bonne réponse. J'aime aussi le commentaire sur le fait de garder les choses à l'écart du système de gestion des paquets.
DaveParillo
1
Définitivement / optez pour "paquets tiers complets". La plupart des installations diviseront les divers fichiers binaires, bibliothèques, fichiers, etc. dans des répertoires différents, mais lorsque vous avez un répertoire "tout-en-un", / opt facilite la gestion.
Avery Payne
Quelques questions rapides: 1) Si / usr est censé être partageable entre toutes les machines d’un réseau, cela ne signifie-t-il pas que tous les répertoires enfants le seront aussi, rendant ainsi / usr / local visible aux autres machines du réseau? 2) Qu'est-ce que FHS 3) Lorsque vous parlez des commandes nécessaires au montage de / usr, parlez-vous de la façon dont le système d'exploitation démarre à partir d'un arrêt, par exemple? Je m'excuse pour le bombardement de questions 7 ans plus tard, mais je suis nouveau sur Linux et je me posais la même question après avoir vu les guides d'installation dire où placer les éléments, mais pas POURQUOI les mettre ici. +1 btw
Ungeheuer
5

Vraiment, cela dépend des préférences personnelles. Je vais expliquer le mien pour ce que ça vaut.

/ usr, / usr / bin sont généralement des emplacements pour les logiciels installés par le système. Lorsque j'installe des choses moi-même, je les installe à plusieurs endroits:

  1. S'il ne s'agit que d'un script ou d'un petit programme que je vais utiliser, je l'installe dans ~ / bin - c'est là que se trouvent la plupart de mes fichiers.
  2. Si c'est quelque chose comme vous l'avez décrit (NetBeans) avec une arborescence de fichiers complète, je l'installe dans / opt
  3. S'il s'agit d'un seul exécutable, je l'installe dans / usr / local / bin

Pourquoi est-ce que je fais la distinction entre # 2 et # 3? Aucune idée, c'est juste une habitude que j'ai développée au fil du temps. Il est clair que / opt finit généralement par devenir un arbre profond de fichiers, mais n’a que 2 ou 3 «choses» réellement installées. En ce moment, j’ai installé des notes de lampp et de lotus dans opt, 2 répertoires qui ont chacun des arbres plutôt grands en dessous. Dans / usr / local / bin, j'ai 20 ou 30 entrées, mais pas de sous-répertoire.

Je n'installe pas les choses dans / usr / bin ou / usr / sbin parce que j'aime bien séparer les choses que j'ai ajoutées manuellement (ne faisant pas partie de l'installation simplement à partir du référentiel standard).

DaveParillo
la source
1

La norme de hiérarchie des systèmes de fichiers fournit certaines indications. J'ai trouvé que la plupart des distributions aiment installer des paquets dans /usr/share.

Pour cette raison, j’ai adopté la pratique d’installer toute application non installée via le gestionnaire de paquets (rpm / apt-get / emerge) dans /usr/local. Cela me permet de garder les applications et les bibliothèques qui ne sont pas gérées via la gestion des paquets séparément de celles qui le sont.

C'est une technique qui m'a aidé à gérer mon système sous Fedora Core et Gentoo.

Adam Luchjenbroers
la source
0

J'aurais pensé que l'emplacement par défaut est /bin, c'est à peu près tout où tout est installé par défaut si vous utilisez apt-get ou similaire ...

... Cependant, quand il s'agit de programmes plus modernes (ou ceux sans installateur) qui ont beaucoup de fichiers supplémentaires, j'aime les placer dans leur propre répertoire /bin.

William Hilsum
la source
3
Quelle est la différence entre / bin, / usr / bin et / sbin? / bin est le plus logique, car il s’agit de fichiers BINary.
Thomas Owens
0

Ils s’installent généralement dans plusieurs dossiers, principalement / usr, / local, / bin, etc. Vous pouvez savoir où le programme est installé à partir du programme d’installation de GDebi (sous l’onglet Fichiers). Si vous envisagez de déplacer Netbeans, je suggérerais de le déplacer vers / opt, car c’est là que Google semble installer ses éléments.

digitxp
la source
0

Accepter la réponse de James Polley, mais en fait, le répertoire par défaut a beaucoup de sens, sauf si vous devez partager l'application entre plusieurs comptes. Par exemple, j’avais besoin d’installer Eclipse 3.0 (obsolète) pour que Flex fonctionne sous Linux, et je l’ai mis dans $ HOME / eclipse3.

CarlF
la source
0

J'aime utiliser / apps pour la plupart des applications complémentaires installées sur plusieurs serveurs. Je garde une copie du dossier dans / installs / apps sur mon serveur nfs. Lorsque je crée un nouveau serveur Linux, je monte le dossier installs et copie / apps et j'ai de nombreuses applications communes sur le nouveau serveur. Je supprime les entrées dont je n'ai pas besoin pour ce nouveau serveur et j'ai terminé. Eh bien, j'ai peut-être besoin d'exécuter un script ou trois pour définir des variables d'environnement ou des instructions de chemin d'accès, mais c'est à peu près ce qu'il faut pour configurer de nombreux nouveaux serveurs.

Je viens d'un fond Windows et .net. Une des promesses de .net était que la plupart des applications puissent être installées à l'aide de Windows xcopy. Je cherche la même chose sous Linux. Le cas échéant, je choisis l'archive plutôt que le fichier RPM, yum, etc., afin de pouvoir effectuer un déploiement vers / apps avec cp -r et d'ajouter l'application sur mon serveur nfs lors de futurs déploiements.

Vallée
la source
2
La question demande la convention. Vous avez décrit ce que vous faites personnellement. Pouvez-vous au moins relier cela à une convention?
fix1234