Стандарт иерархии файловой системы - Где разместить исходные функции?

9

У меня есть несколько сценариев bash, выполняющих системные проверки. Эти скрипты исходные параметры конфигурации из файла / etc / healthchecks / config.

Вместе с файлом конфигурации у меня есть файл общих функций. Сценарии должны иметь возможность получать этот файл и запускать в нем функции.

На основании стандарта иерархии файловой системы, куда мне поместить файл общих функций? Это не конфигурация, поэтому не похоже, что она принадлежит / etc, но она также не выполняется, поэтому / usr / bin кажется неверным. Может быть / usr / lib?

vastlysuperiorman
источник

Ответы:

7

Вы должны поместить свои healthchecksисполняемые файлы в / usr / local / bin или / opt / bin. Если вы видите, что ваша папка / opt пуста, значит, ваш дистрибутив Linux не использует ее. Таким образом, подходящее место будет / usr / local.

/ usr / local и / opt - это место, где должен быть помещен каждый "ручной" пакет / программа. / usr для пакетов, управляемых менеджерами пакетов (т. е. dpkg). / opt - это «стандартное место» для ручных пакетов в соответствии с FHS, но в дистрибутивах Debian вместо этого используется / usr / local.

Для файлов конфигурации они должны быть помещены в / usr / local / etc, так как / etc для файлов конфигурации автоматических пакетов и других системных программ.

Тогда правильное место для ваших общих функций - / usr / local / share (/ usr / share для общих файлов автоматических пакетов). Каждый файл, предназначенный только для чтения и независимый от архитектуры, принадлежит / usr / share или / usr / local / share (если они принадлежат "автоматическим" или "ручным" пакетам).

/ usr / lib предназначена для динамических и статических двоичных библиотек (.so или .a), а не для «интерпретируемых» библиотек / функций.

Обычно интерпретаторы имеют разные подпапки в / etc / share / для каждой версии, а внутри каждой папки версий - разные папки для скриптов, локалей, тестов, примеров и так далее.

Если когда-нибудь вы создадите официальный репозиторий для своего пакета healthchecks, вы можете перенести содержимое / usr / local / healthchecks в / usr / healthchecks и / etc / healthchecks.

Peregring-лк
источник
2
Я пошел дальше и удалил свой ответ, потому что 1) ваш достаточно хорошо освещает эту тему и 2) libexecтехнически еще не является частью FHS. Он присутствует в черновике 3.0 и обзоре FHS от Redhat , но технически еще не является частью FHS. (используйте его, если хотите, в основном)
Andrew B
1

Я обычно стараюсь хранить специфичные для сайта вещи вне этих зарезервированных системных областей. Вы можете рассмотреть возможность использования своей собственной иерархии каталогов верхнего уровня, так как при использовании системных областей специальные файлы сайта могут легко потеряться или забыться при эволюции системы. Другая возможность может быть / usr / local / etc .....

Якорь,
источник