Я использую серверы Linux уже много лет, и меня по-прежнему смущает стандарт иерархии файловых систем. Обычно я могу жить в замешательстве. Но теперь, когда я разрабатываю свое собственное программное обеспечение для Linux, мне нужно понять, где оно должно быть установлено менеджерами пакетов.
Я был довольно уверен, что / opt был идеальным местом для моего приложения. Но после изучения моей файловой системы Debian я больше не уверен: на самом деле в / usr / lib установлено множество программ! Чтобы назвать несколько: MySQL, MySQLWorkbench, Nautilus, Rythmbox ...
Согласно FHS, / usr / lib должен содержать «Библиотеки для программирования и пакетов» и «включает в себя объектные файлы, библиотеки и внутренние двоичные файлы, которые не предназначены для непосредственного выполнения пользователями или сценариями оболочки» ( см. Здесь ).
Многие программные продукты, расположенные в / usr / lib моего сервера Debian, - это не библиотеки или внутренние двоичные файлы, а полноценные пользовательские исполняемые программы!
Я все еще на пути к тому, чтобы мое приложение было установлено в / opt. Но мне бы очень хотелось понять, правильно ли это, и, прежде всего, почему .
Спасибо заранее за ваши добрые советы,
Эрик.
Ответы:
Настоящим ключом к пониманию стандарта Heirarchy файловой системы является знание того, что он разработан с учетом сетевых файловых систем.
Для каждой машины с той же ОС, выпуском и архитектурой вы можете поделиться / usr через NFS и смонтировать его.
/ usr монтируется (перемонтируется) после инициализации сетевого стека.
источник
Разница в том, что
/usr
она предназначена для хранения пакетов, установленных как часть системы . Пакеты, которые вы получаете из репозиториев Debian / Ubuntu, PPA и т. Д., Находятся здесь. Хотя/opt
предназначен для независимых сторонних приложений, которые не распространяются в процессе распространения пакета распространения.Если вы распространяете пакеты .deb или .rpm, чтобы в конечном итоге включить ваше программное обеспечение в официальные репозитории, вам следует установить на
/usr
. В противном случае установите в/opt
. В любом случае ваше приложение должно быть в состоянии скомпилироваться для запуска в любом произвольном месте (например, с помощью автоинструментов GNU).источник
/usr/local
не подходил для этого вопроса. Но он предназначен для стороннего программного обеспечения, которое локальный администратор компилирует и устанавливает.Вы устанавливаете свои библиотеки
<prefix>/lib
, свои двоичные файлы<prefix>/bin
, свои заголовочные файлы , справочные<prefix>/include
страницыprefix/[share/]man
, файлы pkgconfig<prefix>/lib/pkgconfig
или<prefix/share/pkgconfig
свои файлы .make cmake в<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, чтобы люди могли лучше отслеживать, кто что установил.
источник