J'ai un exécutable pour le client de contrôle de version perforce ( p4). Je ne peux pas le placer /opt/localcar je n'ai pas de privilèges root. Y at-il un emplacement standard où il doit être placé $HOME?
La hiérarchie du système de fichiers a-t-elle une convention stipulant que les fichiers exécutables / binaires locaux doivent être placés $HOME/bin?
En général, si un fichier binaire non installé et géré par le système doit être accessible à plusieurs utilisateurs à l'échelle du système, il doit être placé par un administrateur /usr/local/bin. Il existe une hiérarchie complète sous /usr/localqui est généralement utilisé pour les packages logiciels compilés et installés localement.
Si vous êtes le seul utilisateur d'un binaire, l'installation dans $HOME/binest l'emplacement approprié, car vous pouvez l'installer vous-même et vous serez le seul consommateur. Si vous compilez un package logiciel à partir des sources, il est également approprié de créer une hiérarchie locale partielle ou complète dans votre $HOMErépertoire. La hiérarchie locale complète ressemblerait à ceci.
$HOME/bin Binaires locaux
$HOME/etc Configuration système spécifique à l'hôte pour les fichiers binaires locaux
$HOME/games Binaires locaux
$HOME/include Fichiers d'en-tête C locaux
$HOME/lib Bibliothèques locales
$HOME/lib64 Bibliothèques locales 64 bits
$HOME/man Manuels en ligne locaux
$HOME/sbin Binaires du système local
$HOME/share Hiérarchie locale indépendante de l'architecture
$HOME/src Code source local
Lors de l'exécution configure, vous devez définir votre hiérarchie locale pour l'installation en spécifiant $HOMEcomme préfixe pour les valeurs d'installation par défaut.
./configure --prefix=$HOME
À présent, une fois make && make installexécutés, les fichiers binaires, les packages, les pages de manuel et les bibliothèques compilés seront installés dans votre $HOMEhiérarchie locale. Si vous n'avez pas créé manuellement une $HOMEhiérarchie locale, make installcréera les répertoires nécessaires au progiciel.
Une fois installé dans $HOME/bin, vous pouvez soit ajouter $HOME/binà votre $PATHou appeler le binaire en utilisant l'absolu $PATH. Certaines distributions incluront $HOME/bindans votre $PATHpar défaut. Vous pouvez tester cela en echo $PATHvérifiant s’il $HOME/biny en a un ou mettre le binaire dans $HOME/binet l’exécutant which binaryname. S'il revient avec $HOME/bin/binaryname, alors il est dans votre $ PATH par défaut.
Je ne recommanderais pas d'utiliser $HOME. Cela inonde votre répertoire personnel de nombreux répertoires qui ne vous intéressent pas du tout. Qui veut avoir man, libetc. dans sa maison? Je préférerais créer la hiérarchie ci $HOME/bin- dessous ou $HOME/local. Cela ajoute un seul sous-répertoire à votre répertoire personnel, au lieu de dix. Le PATHpeut facilement être adapté pour inclure $HOME/bin/binou $HOME/local/bin.
@janneb La spécification du répertoire de base XDG à laquelle vous vous référez ne mentionne que $HOME/.local/share(version 0.7, 24 novembre 2010).
Piotr Dobrogost
28
Comme mentionné précédemment , /usr/localest conçu comme un préfixe pour, essentiellement, les logiciels installés par l'administrateur système, alors qu'il /usrdevrait être utilisé pour les logiciels installés à partir des packages de la distribution.
L'idée sous - jacente est d'éviter les conflits avec les logiciels distribués (tels que rpmet les debpaquets) et de donner à l'administrateur complet règne sur le préfixe « local ».
Cela signifie qu'un administrateur peut installer un logiciel compilé personnalisé tout en utilisant une distribution comme debian.
Les logiciels placés dans / ou / usr peuvent être écrasés par les mises à niveau du système (nous recommandons toutefois que les distributions ne écrasent pas les données dans / etc dans ces circonstances). Pour cette raison, les logiciels locaux ne doivent pas être placés hors de / usr / local sans raison valable.
Lors de l’installation de logiciels spécifiques à l’utilisateur, uther suggère de l’ utiliser $HOMEcomme préfixe, car cela vous garantit des autorisations d’écriture. Personnellement, j’ai le sentiment d’utiliser $HOME/.localune solution plus élégante, car elle évite d’encombrer votre (et j'espère) votre répertoire personnel agréable et bien rangé!
$HOME/.local/shareest déjà utilisé dans la freedesktop.org spécification XDG Répertoire de base , donc il ne faut pas beaucoup pour envisager d' ajouter un $HOME/.local/binà votre $PATHet faire un $HOME/.local/lib, etc, pendant que vous y êtes.
Si vous ne voulez pas vraiment que votre préfixe soit un répertoire caché, vous pouvez également créer un lien symbolique vers celui-ci, par exemple:
ln -s .local ~/local
Sidenote
Il est à noter que .config(not .local/etc) est la valeur par défaut $XDG_CONFIG_HOMEutilisée pour les fichiers de configuration spécifiques à l'utilisateur. Je devrais également souligner que, malheureusement, une grande partie du logiciel ignore le XDG et crée des fichiers de configuration où bon leur semble (généralement à la racine de $HOME). Notez également que $XDG_CONFIG_HOMEpeut être désactivé si la valeur par défaut $HOME/.configest souhaitée.
Bizarrement, aucun répertoire n'est réservé aux fichiers de configuration par défaut d'une distribution. Il est donc impossible de savoir si un fichier a /etcété fourni par la distribution ou édité par l'administrateur système.
Cette note de côté /etcest vraiment énervante quand on gère un serveur avec plusieurs administrateurs - il est assez difficile de garder trace des modifications personnalisées apportées aux fichiers de configuration.
$HOME
. Cela inonde votre répertoire personnel de nombreux répertoires qui ne vous intéressent pas du tout. Qui veut avoirman
,lib
etc. dans sa maison? Je préférerais créer la hiérarchie ci$HOME/bin
- dessous ou$HOME/local
. Cela ajoute un seul sous-répertoire à votre répertoire personnel, au lieu de dix. LePATH
peut facilement être adapté pour inclure$HOME/bin/bin
ou$HOME/local/bin
.$HOME/.local/share
(version 0.7, 24 novembre 2010).Comme mentionné précédemment ,
/usr/local
est conçu comme un préfixe pour, essentiellement, les logiciels installés par l'administrateur système, alors qu'il/usr
devrait être utilisé pour les logiciels installés à partir des packages de la distribution.L'idée sous - jacente est d'éviter les conflits avec les logiciels distribués (tels que
rpm
et lesdeb
paquets) et de donner à l'administrateur complet règne sur le préfixe « local ».Cela signifie qu'un administrateur peut installer un logiciel compilé personnalisé tout en utilisant une distribution comme debian.
Lors de l’installation de logiciels spécifiques à l’utilisateur, uther suggère de l’ utiliser
$HOME
comme préfixe, car cela vous garantit des autorisations d’écriture. Personnellement, j’ai le sentiment d’utiliser$HOME/.local
une solution plus élégante, car elle évite d’encombrer votre (et j'espère) votre répertoire personnel agréable et bien rangé!$HOME/.local/share
est déjà utilisé dans la freedesktop.org spécification XDG Répertoire de base , donc il ne faut pas beaucoup pour envisager d' ajouter un$HOME/.local/bin
à votre$PATH
et faire un$HOME/.local/lib
, etc, pendant que vous y êtes.Si vous ne voulez pas vraiment que votre préfixe soit un répertoire caché, vous pouvez également créer un lien symbolique vers celui-ci, par exemple:
Sidenote
Il est à noter que
.config
(not.local/etc
) est la valeur par défaut$XDG_CONFIG_HOME
utilisée pour les fichiers de configuration spécifiques à l'utilisateur. Je devrais également souligner que, malheureusement, une grande partie du logiciel ignore le XDG et crée des fichiers de configuration où bon leur semble (généralement à la racine de$HOME
). Notez également que$XDG_CONFIG_HOME
peut être désactivé si la valeur par défaut$HOME/.config
est souhaitée.Bizarrement, aucun répertoire n'est réservé aux fichiers de configuration par défaut d'une distribution. Il est donc impossible de savoir si un fichier a
/etc
été fourni par la distribution ou édité par l'administrateur système.la source
.local
dans la FHS/etc
est vraiment énervante quand on gère un serveur avec plusieurs administrateurs - il est assez difficile de garder trace des modifications personnalisées apportées aux fichiers de configuration.