Quelle est la différence entre / etc et / usr / local / etc

24

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/etcré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/binpour 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 ...

beatgammit
la source
2
Une raison de ne pas le mettre directement sous /etc/myapp? Si je cherchais à changer une config, ce serait le premier endroit où je chercherais.
new123456
@ new123456- Personnellement, j'aime l'idée de garder les fichiers de configuration proches du binaire (par exemple /usr/local/bin-> /usr/local/etc), mais les conventions gagnent dans ce cas.
beatgammit

Réponses:

24

/usr/localest 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 comme apt, 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/localpour 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.

EightBitTony
la source
Ouais, je pense qu'autoriser la personnalisation est bon, mais je me demandais si c'était /usr/local/etcstandard pour les fichiers de configuration pour ce genre de programmes.
beatgammit
/ usr / local / etc est quelque chose que je pourrais choisir si je construisais votre démon à partir des sources, mais / etc est l'endroit que quelqu'un choisirait s'il emballait votre démon avec debian ou Ubuntu.
EightBitTony
4
En fait, les normes GNU appellent le package par défaut sur le chemin local car les gens qui le construisent à partir de la source ne spécifient généralement pas où. Les distributions le remplaceront par le chemin non local lorsqu'elles seront empaquetées / construites.
psusi
@ psusi- Bon point, je m'assurerai d'en faire la valeur par défaut. Peut-être que je détecterai quand ma make install est exécutée en tant qu'utilisateur root ou utilisateur normal. Si root, je vais par défaut / usr / local, si user, dans le répertoire personnel des utilisateurs. J'ajouterai également des paramètres de configuration.
beatgammit
@ EightBitTony - Y a-t-il d'autres plates-formes qui ont des conventions différentes? Je fais déjà différents scripts de démarrage pour les différentes plateformes (upstart, systemd, init).
beatgammit
7

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

AndyM
la source
4

/usr/local/etcest rarement utilisé dans le monde Linux. Mais la décision de fichiers de configuration du magasin dans /etc, /usr/local/etcou 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 /etcn'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/mydaemonou /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 avec configure --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).

Gilles 'SO- arrête d'être méchant'
la source
Y a-t-il une raison pour laquelle il /usr/local/etcn'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.
beatgammit
1
@tjameson Je ne sais pas s'il y a une raison répandue. BSD le fait de cette façon. En tant qu'administrateur, je aime que tous les fichiers de configuration (qui doit être sauvegardé et contrôlé le changement, à la différence de la substance dans binet libet ainsi de suite qui peuvent être remis en place) vivent dans le même endroit.
Gilles 'SO- arrête d'être méchant'
1

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.

Alexandre
la source