Назад | Перейти на главную страницу

Почему программное обеспечение устанавливается в / usr / lib?

Я использую серверы Linux уже много лет, и меня все время сбивает с толку Стандарт иерархии файловой системы. Обычно я могу жить в замешательстве. Но теперь, когда я разрабатываю собственное программное обеспечение для Linux, мне нужно понять, куда его должны установить менеджеры пакетов.

Я был почти уверен, что / opt - идеальное место для моего приложения. Но после исследования моей файловой системы Debian я больше не уверен: многие программы фактически установлены в / usr / lib! Назову несколько: MySQL, MySQLWorkbench, Nautilus, Rythmbox ...

Согласно FHS, / usr / lib должен содержать «библиотеки для программирования и пакетов» и «включает объектные файлы, библиотеки и внутренние двоичные файлы, которые не предназначены для непосредственного выполнения пользователями или сценариями оболочки» (Посмотреть здесь).

Многие программы, расположенные в / usr / lib моего сервера debian, не являются библиотеками или внутренними двоичными файлами, а являются полноценными программами, исполняемыми пользователем!

Я все еще собираюсь установить свое приложение в / opt. Но мне очень хотелось бы понять, правильно ли это и, прежде всего, Зачем.

Заранее спасибо за ваши добрые советы,

Эрик.

Разница в том, что /usr предназначен для хранения установленных пакетов как часть системы. Пакеты, которые вы получаете из репозиториев Debian / Ubuntu, PPA и т. Д., Можно найти здесь. Пока /opt предназначен для разукрупненных сторонний приложения, которые не распространяются через процесс распространения пакетов дистрибутива.

Если вы распространяете пакеты .deb или .rpm с целью в конечном итоге включения вашего программного обеспечения в официальные репозитории, вам следует установить их на /usr. В противном случае установите в /opt. В любом случае ваше приложение должно быть скомпилировано для запуска в любом произвольном месте (например, с помощью автоинструментов GNU).

Настоящий ключ к пониманию стандарта иерархии файловой системы - это знание того, что он разработан с учетом сетевых файловых систем.

Для каждой машины с одной и той же ОС, выпуском и архитектурой вы можете совместно использовать / usr через NFS и смонтировать его.
/ usr монтируется (повторно) после инициализации сетевого стека.

/var <-- local, r/w optimized
/usr <-- can be mounted over network, possibly even read-only!
/opt <-- local, read mostly
/etc <-- local, read mostly
/srv <-- local, r/w optimized

/home <-- either/or

Вы устанавливаете свои библиотеки в <prefix>/lib , ваши двоичные файлы в <prefix>/bin, ваши файлы заголовков в <prefix>/include, страницы руководства в prefix/[share/]man, файлы pkgconfig в <prefix>/lib/pkgconfig или <prefix/share/pkgconfig, ваши файлы cmake .m4 в <prefix>/share/aclocal

Затем позвольте менеджеру пакетов выбрать префикс. Если вы сами распространяете rpm / deb, /usr хороший выбор для приставки.

./configure --prefix=~/.local/ Должен по-прежнему работать, поэтому, пожалуйста, никуда не прописывайте свой путь!

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

Я бы посоветовал не устанавливать ваше приложение в / opt. Причина 1: в некоторых дистрибутивах по умолчанию отсутствует / opt. Причина 2: / usr / lib - стандартный путь для библиотек. {Если другим приложениям необходимо использовать вашу библиотеку, вам нужно вручную добавить путь к библиотеке в / etc / ldconfig} / opt удобнее, когда у вас есть автономные приложения, которые вы устанавливаете вручную, и вы хотите знать, где они находятся

Одной из причин, по которой полнофункциональные исполняемые файлы находятся в / usr / lib, может быть то, что они используются из других скриптов. {Например, сценарии bash не могут напрямую использовать API. по этой причине распространенным приемом является создание "оболочки" вокруг этого API и передача параметров в качестве аргументов скрипта}

Пожалуйста, установите его в / opt.

Слишком много приложений для Linux делают ту же марку, которую разработчики Windows создали в 90-х годах.

Давайте установим наш материал в C: \ windows, чтобы его было просто и легко найти (и немного быстрее). Затем наступило 15 лет ада DLL, так как разным программным пакетам требовались разные версии одних и тех же библиотек (которые в Windows не поддерживали версии библиотек).

Если вы не пишете реальное системное программное обеспечение, поместите его в / opt, чтобы люди могли лучше отслеживать, кто что установил.