web-dev-qa-db-fra.com

Dans quel répertoire dois-je installer des programmes sous Linux?

Je veux installer un programme sous Linux et l'exécuter en tant que démon. (Team Speak 3 dans ce cas, mais la question est de nature générale). Il n'y a aucun paquet fourni, seulement des binaires goudronnés. Où dans la structure de répertoires dois-je mettre un tel programme par convention?

Sur le Web, j'ai trouvé que/opt est pour les "applications complémentaires facultatives", tandis que/usr est pour les "programmes utilisateur". J'ai trouvé un tutoriel suggérant/opt tandis que l'autre suggérait/usr.

Alors, lequel est "plus correct"?

52
Eiver

Le "plus correct" dépend de votre distribution. Vous devriez vérifier les directives de votre distribution pour savoir où placer les logiciels qui ne sont pas gérés par le gestionnaire de packages (souvent /usr/local) OR sur la façon de créer votre propre package pour celui-ci.

Comme vous l'avez dit, TeamSpeak vient de tout mettre dans un dossier (et peut ne pas être facile à réorganiser), oui /opt/ est probablement le meilleur.

(Mais, par exemple, dans Archlinux, le gestionnaire de paquets peut y installer, donc je ferais toujours un PKGBUILD à installer dans /opt.)

De plus, les distributions essaient généralement de suivre le Filesystem Hierarchy Standard , c'est donc là qu'il faut chercher une convention plus générique.

33
Leiaz

Si vous compilez votre propre logiciel, vous contrôlez finalement l'emplacement d'installation. Par convention, les logiciels compilés et installés manuellement (pas via un gestionnaire de packages, par exemple apt, yum, pacman) sont installés dans /usr/local. Certains packages (programmes) créeront un sous-répertoire dans /usr/local pour stocker tous leurs fichiers pertinents, tels que /usr/local/openssl. D'autres packages installeront leurs fichiers nécessaires dans des répertoires existants tels que /usr/local/sbin et /usr/local/etc. Ce sont simplement des emplacements par défaut et peuvent être modifiés pendant la compilation.

Lorsque vous compilez un logiciel, l'emplacement d'installation peut être spécifié en utilisant le --prefix= option lors de l'exécution ./configure. Il est fortement recommandé de consulter toutes les options disponibles pour votre package en exécutant $ ./configure --help | less. De plus, parcourir les documents INSTALL et README fournis avec votre package est une bonne idée. Ils ont tendance à inclure des instructions d'installation et des informations de dépendance spécifiques au package.

Il convient également de noter que bien que vous puissiez stocker des logiciels n'importe où, selon FHS , le code source des logiciels installés localement doit être stocké dans /usr/local/src La standardisation de l'emplacement de stockage de vos arborescences sources vous permettra de localiser facilement une arborescence si vous avez besoin de copier un fichier de configuration de stock ou binaire. Même si certains packages l'utilisent, votre code source ne doit pas être stocké dans /usr/src car il est destiné aux logiciels système tels que le noyau.

Enfin, vous devez vous assurer que votre emplacement d'installation est inclus dans votre $PATH. Si vous décidez d'installer votre package dans /opt mais ce n'est pas dans votre $PATH votre Shell ne trouvera pas les exécutables et vous devrez utiliser le chemin absolu pour appeler vos programmes. Ici sont d'excellentes discussions de AU sur la configuration de votre $PATH

Lecture supplémentaire: man hier

7
Creek

Les Linux Standard Base et les Filesystem Hierarchy Standard sont sans doute les normes où et comment installer les logiciels sur un système Linux et suggèrent de placer des logiciels qui ne sont pas inclus dans votre distribution soit dans /opt ou /usr/local/ ou plutôt ses sous-répertoires (/opt/<package> /opt/<provider> /usr/local/bin).

La meilleure pratique consiste à convertir les logiciels que vous téléchargez en un progiciel installable natif de votre distribution, par exemple aux formats dpkg ou rpm. Cela facilitera la génération de rapports, la mise à niveau et la suppression nette du logiciel.

5
HBruijn

Les binaires vont dans le dossier bin par des conventions communes, la façon dont vous organiseriez la structure de votre paquet dépend de vous, je pense à /opt/<prog_name>/ s'il ne s'agit que d'une liste de binaires.

1
bbsanem

J'ai eu la même question lors de l'installation d'Eclipse via le programme d'installation d'Eclipse.

J'ai remarqué que Gimp, Perl et Vim sont installés dans le /usr/share dossier et a décidé de l'installer là-bas.

1
senpai

~/.local/bin

Ceci est défini dans standard de systemd qui a ce qui suit à dire sur le contenu du répertoire:

Exécutables qui doivent apparaître dans le $PATH chemin de recherche. Il est recommandé de ne pas placer d'exécutables dans ce répertoire qui ne sont pas utiles pour l'appel depuis un Shell; ceux-ci doivent être placés dans un sous-répertoire de ~/.local/lib/ au lieu. Des précautions doivent être prises lors du placement de fichiers binaires dépendants de l'architecture à cet endroit, ce qui peut être problématique si le répertoire personnel est partagé entre plusieurs hôtes avec des architectures différentes.

Selon votre distribution, vous devrez peut-être ajouter le répertoire à votre chemin d'accès en le mettant dans votre ~/.bashrc:

PATH=$PATH:~/.local/bin

Voir aussi this .

0
Matthias Braun

Les programmes peuvent être installés de deux manières, selon la façon dont ils sont emballés.

  1. Via le gestionnaire de logiciels (apt, synaptic, Gdebi etc.) - le programme est sous une forme de package, généralement .deb ou rpm. Dans la plupart des cas, les gestionnaires de logiciels gèrent les dépendances et installent généralement les fichiers binaires dans /usr/bin, configurez les fichiers dans /etc etc. Ils peuvent également créer un fichier de configuration pour le programme dans votre maison, généralement ~/.foo. Si vous pouvez modifier ce fichier, vous pouvez également modifier facilement les paramètres de votre session de cette façon. Lorsque vous supprimez le package, le gestionnaire trouvera tous les fichiers et les supprimera proprement (il a stocké tous les emplacements dans un fichier texte spécial). Mais il peut conserver certains fichiers de configuration, par exemple celui de votre dossier personnel.

  2. Vous téléchargez un programme (généralement compressé) sous forme de fichiers binaires précompilés pour votre architecture. Le fichier exécutable du programme se trouve généralement dans un seul dossier à côté d'autres fichiers (bibliothèques liées dynamiquement, etc.). Ce dossier entier peut être copié, avec les privilèges root, soit dans /opt ou /usr/bin et pourrait, si les autorisations le permettent, être utilisé par n'importe quel utilisateur. J'ai moi-même placé les dossiers contenant des fichiers binaires dans mon dossier personnel pour ~/bin. Vous devriez maintenant pouvoir exécuter le programme en appelant son fichier bin.

0
Štěpán Doan