Je développe un démon qui doit stocker de nombreuses données d'application et j'ai remarqué que sur mon système (Fedora 15), il y a un /usr/local/etc
répertoire.
J'ai décidé d'installer mon démon sur /usr/local/bin
, et j'ai besoin d'une place pour mes fichiers de configuration.
Je ne l'ai pas vu sur Wikipédia . Est-ce non standard ou est-ce en fait l'endroit standard pour les programmes installés /usr/local/bin
pour stocker les fichiers de configuration?
La raison en est que je veux le commercialiser auprès d'administrateurs système, et obtenir quelque chose comme ça n'est pas un bon argument de vente ...
directory-structure
fhs
beatgammit
la source
la source
/etc/myapp
? Si je cherchais à changer une config, ce serait le premier endroit où je chercherais./usr/local/bin
->/usr/local/etc
), mais les conventions gagnent dans ce cas.Réponses:
/usr/local
est généralement pour les applications construites à partir de la source. c'est-à-dire que j'installe la plupart de mes packages en utilisant quelque chose commeapt
, mais si je télécharge une version plus récente de quelque chose ou d'un logiciel ne faisant pas partie de ma distribution, je le construirais à partir de la source et mettrais tout dans la hiérarchie `/ usr / local '.Cela permet une séparation du reste de la distribution.
Si vous développez un logiciel pour les autres, vous devez le concevoir afin qu'il puisse être installé partout les gens veulent, mais il devrait par défaut aux réguliers FHS répertoires système spécifiés quand ils spécifient le préfixe à
/usr
(/etc
,/usr/bin
, etc.)c'est à dire
/usr/local
pour votre usage personnel, il ne devrait pas être le seul endroit pour installer votre logiciel.Ayez une bonne lecture du FHS et utilisez les outils Linux standard pour permettre à votre source d'être construit et installé n'importe où afin que les constructeurs de packages pour les différentes distributions puissent les configurer selon les besoins de leur distribution, et que les utilisateurs puissent les insérer
/usr/local
s'ils le souhaitent ou les répertoires système habituels s'ils le souhaitent.la source
/usr/local/etc
standard pour les fichiers de configuration pour ce genre de programmes.Une réponse très courte
/ etc est utilisé par votre système d'exploitation pour ses fichiers de configuration
/ usr / local / etc peut être utilisé pour vos fichiers de configuration par vous et votre logiciel installé en plus
la source
/usr/local/etc
est rarement utilisé dans le monde Linux. Mais la décision de fichiers de configuration du magasin dans/etc
,/usr/local/etc
ou un autre endroit est généralement effectué au moment de la compilation (et peut souvent être surchargée par une option de ligne de commande ou variable d'environnement). Peu importe la valeur par défaut lors de la compilation, assurez-vous simplement qu'il est facile à définir (généralement une option pour--sysconfdir
, après autoconf). Si votre démon est empaqueté pour une distribution, l'exécutable ira dans/usr/sbin
(la valeur par défaut lors de la construction à partir de la source devrait être/usr/local/sbin
) et la configuration sous/etc
.Notez que ce
/etc
n'est pas l'endroit pour «beaucoup de données d'application». Cela entre/var
. La valeur par défaut lors de la construction à partir de la source pourrait être/var/local/mydaemon
ou/var/lib/mydaemon
; encore une fois, il n'y a pas de convention forte dans les deux cas pour la valeur par défaut lors de la construction à partir de la source. Il devrait y avoir un moyen de modifier à la fois la valeur par défaut à la compilation (généralement avecconfigure --localstatedir
) et la valeur par défaut à l'exécution (avec un paramètre dans un fichier de configuration, éventuellement avec une option de ligne de commande ou une variable d'environnement).la source
/usr/local/etc
n'est pas utilisé très souvent? J'aime l'idée de garder les fichiers de configuration au même niveau du système de fichiers que le binaire.bin
etlib
et ainsi de suite qui peuvent être remis en place) vivent dans le même endroit.En tant qu'utilisateur Arch, j'éviterais / usr / local alltogether et utiliserais juste / etc pour la configuration. Lors de l'installation à partir de la source, je préfère écrire un petit fichier PKGBUILD pendant que j'y suis, et éventuellement le télécharger dans le Arch User Repository (AUR), pour les autres et moi-même sur un autre ordinateur à l'avenir. À en juger par le nombre de packages dans AUR et la vitesse à laquelle ils sont créés, je ne suis pas le seul à penser de cette façon. Cela augmente les chances pour tout le monde qu'un package soit disponible au lieu de devoir l'installer à partir de la source et d'éviter les emplacements obsolètes comme / usr / local.
Debian semble également aimer l'idée de construire un paquet de la source au lieu d'installer quoi que ce soit dans / usr / local, d'où des utilitaires comme checkinstall .
La création d'un package de la source que vous souhaitez installer serait un bon moyen de garder une trace de l'emplacement des fichiers et de vous assurer que certains d'entre eux ne sont pas écrasés de manière incohérente par un autre package ou un autre "make install". La désinstallation avec "make uninstall" n'est pas une bonne solution. Les informations sur la version installée sont une autre chose que les gestionnaires de paquets modernes sont bons à suivre.
Je renoncerais complètement à / usr / local. Ce n'est pas un bon endroit pour mettre quoi que ce soit, pas pour installer des packages (les répertoires à l'échelle du système sont plus adaptés) et pas pour les utilisateurs.
la source