Есть ли какая-либо польза от группировки похожих программ в одном каталоге?

Есть ли какая-либо польза от группировки похожих программ в одном каталоге?

Я настраиваю Prometheus на веб-сервере и заметил, что каждый экспортер — это отдельная программа, которую необходимо добавить в каталог в $PATH.

Мой вопрос в том, есть ли преимущество в создании специального каталога для них (например, "/usr/exporters/bin", чтобы составить некий пример) и размещении всех программ-экспортеров там, и добавлении этого файла в $PATH? Или лучше просто поместить программы в каталог по умолчанию для размещения двоичных файлов?

решение1

Единственное преимущество — меньше каталогов в $PATH, следовательно, меньше каталогов для поиска исполняемого файла, но:

  • Это событие (поиск по всем каталогам в $PATH) встречается редко. $PATHЗаписи (исполняемые файлы) хранятся в хэш-таблице в bash, которая обновляется при запуске или через rehash. Нет необходимости выполнять поиск $PATHкаждый раз.

  • Это событие не требует больших затрат. Вся необходимая информация (файл существует и разрешения позволяют выполнение) может быть получена из записи каталога файла — нет необходимости получать доступ к каждому файлу. Просто прочитайте каталог.

Причины, по которым НЕ следует перемещать исполняемые файлы в другой общий каталог, включают:

  • У вас будет нестандартная среда. Когда вы попросите о помощи, потребуются дополнительные усилия, чтобы объяснить это. Проблемы, вызванные именно нестандартной средой, будет очень трудно решить.

  • У вас будет нестандартная среда. Когда будут выпущены обновленные версии, ваша среда не будет соответствовать тому, что ожидает обновление.

  • У вас будет нестандартная среда. Вам придется запомнить и сделать обновления нестандартной среды на этой неделе, на следующей неделе, на неделе после этой, ... вечно.

Это просто «движение обезьяны», не приносящее никакой выгоды.

решение2

Хранение бинарных файлов в каталогах с соответствующими библиотеками довольно распространено. Пример использования — управление версиями. Скажем, когда у вас установлено несколько версий python (2.7, 2.7, 3...) и они все вам нужны, но вы хотите определить стандарт.

Обычно для этого используются alternativesнабор и программные ссылки на двоичный файл, например, /usr/bin(с определениями в /etc/alternatives).

Одним из важных преимуществ может быть также использование порядка слева направо в $PATH. Например, когда вы переопределяете стандартные команды локальными версиями или скриптами, которые выполняют предварительную проверку (например, скрипт, который выводит предупреждение перед shredфайлами ding), они будут находиться в каталоге, указанном в начале $PATH, поэтому локальная (пользовательская) версия запускается, а стандартная — только по ее полному пути.

Подробнее о вашем вопросе: Перемещение двоичных файлов — не очень хорошая идея: они могут полагаться на другие файлы в своем каталоге. Максимум — это мягкие ссылки на них. Или просто используйте набор alternativesинструментов — что также помогает поддерживать больший обзор.

решение3

Это зависит...

Если у вас сотни таких программ, то, возможно.

В противном случае, поскольку /usr/local/bin/находится в вашем $PATH, поместите ваши программы в пользовательский каталог в каком-нибудь разумном месте и разместите соответствующие мягкие ссылки для каждой программы в /usr/local/bin/. Это не идеально, но позволяет избежать искажения PATH.

Связанный контент