Norme de hiérarchie du système de fichiers - Où mettre les fonctions sourcables?

9

J'ai quelques scripts bash exécutant des vérifications du système. Ces scripts source les options de configuration à partir d'un fichier / etc / healthchecks / config.

Avec le fichier de configuration, j'ai un fichier de fonctions partagées. Les scripts devraient être en mesure de source ce fichier et d'exécuter les fonctions qu'il contient.

Sur la base de la norme de hiérarchie du système de fichiers, où dois-je placer le fichier des fonctions partagées? Ce n'est pas une configuration, donc il ne semble pas qu'elle appartient à / etc, mais elle n'est pas non plus exécutée, donc / usr / bin semble incorrect. Peut-être / usr / lib?

largement supérieur
la source

Réponses:

7

Vous devez placer vos healthchecksexécutables dans / usr / local / bin ou dans / opt / bin. Si vous voyez que votre dossier / opt est vide, cela signifie que votre distribution Linux ne l'utilise pas. Ainsi, l'endroit approprié serait / usr / local.

/ usr / local et / opt sont les endroits où chaque paquet / programme "manuel" doit être placé. / usr est pour les packages gérés par les gestionnaires de packages (par exemple, dpkg). / opt est «l'endroit standard» pour les paquets manuels selon FHS, mais les distributions Debian utilisent plutôt / usr / local.

Pour les fichiers de configuration, ils doivent être placés sur / usr / local / etc, car / etc est destiné aux fichiers de configuration des packages automatiques et d'autres programmes système.

L'endroit correct pour vos fonctions partagées est alors / usr / local / share (/ usr / share est pour les fichiers partagés de packages automatiques). Chaque fichier conçu pour être en lecture seule et indépendant de l'architecture appartient à / usr / share ou / usr / local / share (s'ils appartiennent à des packages "automatiques" ou "manuels").

/ usr / lib est destiné aux bibliothèques binaires dynamiques et statiques (.so ou .a), et non aux bibliothèques / fonctions "interprétées".

Habituellement, les interprètes ont différents sous-dossiers dans / etc / share / pour chaque version, et à l'intérieur de chaque dossier de version, différents dossiers pour les scripts, les paramètres régionaux, les tests, les échantillons, etc.

Si un jour vous créez un référentiel officiel pour votre paquet healthchecks, vous pouvez migrer votre contenu / usr / local / healthchecks vers / usr / healthchecks et / etc / healthchecks.

Peregring-lk
la source
2
Je suis allé de l'avant et j'ai supprimé ma réponse parce que 1) la vôtre couvre assez bien le sujet et 2) libexectechniquement ne fait pas encore partie de la FHS. Il est présent dans le brouillon 3.0 et l'aperçu du FHS de Redhat , mais ne fait pas encore techniquement partie du FHS. (utilisez-le si vous voulez, en gros)
Andrew B
1

J'essaye généralement de garder des choses spécifiques au site en dehors de ces zones système réservées. Vous pouvez envisager d'utiliser votre propre hiérarchie de répertoires de niveau supérieur, car lorsque vous utilisez des zones système, des fichiers de site spéciaux peuvent facilement être perdus ou oubliés lors de l'évolution du système. Une autre possibilité pourrait être / usr / local / etc .....

mdpc
la source