Вопрос: Должен ли я устанавливать приложения Linux в / var или / opt?


Я запускаю много приложений с открытым исходным кодом, включая java и tomcat. Кажется, что в большинстве инструкций мои приложения запускаются из /var каталог. Но время от времени я также вижу /opt каталог. Пока я нахожусь, я также вижу /usr/local/ и даже /etc также.

Когда следует устанавливать приложения в одну папку или другую? Есть ли плюсы и минусы каждого из них? Это связано с историей вкуса (Solaris vs Linux или Red Hat vs Ubuntu)?


70
2017-12-21 18:58


Источник


/ etc - это странное и неприемлемое место для оставления приложений ... - user5336
Я видел, как люди помещали вещи в / etc, например, в модули Perl. Странно, но это происходит ... - ℝaphink
Для каждой абсурдности есть чемпион, защищающий его. - womble♦


Ответы:


Стандартом для этих вопросов является Стандарт иерархии файлов, Это довольно большой документ. В основном (и очень грубо) стандартными путями в Linux являются:

  • /bin & /sbin для жизненно важных программ для ОС, только для администраторов;
  • /usr/bin & /usr/sbin для не жизненно важных программ, только для администраторов;
  • /var для живых данных для программ. Это могут быть данные кэша, данные спула, временные данные (если только они не находятся в /tmp, который вычищается при каждой перезагрузке) и т. д .;
  • /usr/local для локально установленных программ. Как правило, в нем размещаются программы, которые соответствуют стандартам, но не были упакованы для ОС, а скорее установлены администратором вручную (используя, например, ./configure && make && make install), а также скрипты администратора;
  • /opt для программ, которые не упакованы и не соответствуют стандартам. Вы просто поместили бы все библиотеки вместе с программой. Это часто быстрое и грязное решение, но оно также может использоваться для программ, созданных вами самим и для которых вы хотите иметь определенный путь. Вы можете создать свой собственный путь (например, /opt/yourcompany) внутри него, и в этом случае вам рекомендуется регистрировать его как часть стандартных путей;
  • /etc не должны содержать программы, а скорее конфигурации.

Если ваши программы специфичны для услуг, предоставляемых службой, /srv также может быть хорошим местом для них. Например, я предпочитаю использовать /srv/www для веб-сайтов, а не /var/www чтобы каталог содержал только данные, которые я добавил, и ничего из пакетов программного обеспечения.

Существуют некоторые различия между дистрибутивами. Например, системы RedHat используют libexec каталогов, когда нет систем Debian / Ubuntu.

FHS в основном используется дистрибутивами Linux (на самом деле я не знаю других ОС, которые действительно соответствуют ему). Другие системы Unix не следуют за ним. Например, системы BSD, как правило, используют /usr/local для упакованных программ, что не относится к Linux. У Solaris очень разные стандартные пути.

Я настоятельно рекомендую вам прочитать документ FHS, который я связал выше, если вы хотите узнать больше об этом.


123
2017-12-21 19:06



Один из немногих списков пулей, которые я мог бы распечатать в качестве обмана. - stimpy77
+1 для /srv, Я искал место для своих репозиториев git и не хотел, чтобы мой контент Apache находился в /var/www, /srv кажется идеальным местом. - Mr. Hedgehog
@ ℝaphink, Так почему это называется var вместо data? - Pacerier
@ Mr.Hedgehog, Что вы подразумеваете под словом «не нравится»? Позаботьтесь об этом? - Pacerier


Это зависит от вашего местного стандарта.

Лично я не устанавливаю ничего в / var без уважительной причины. Мой / usr / local почти всегда монтируется nfs из сети, поэтому все, что не упаковано, устанавливается в / opt.


2
2017-12-21 19:14



Что бы вы ввели / var в любом случае, кроме данных? - ℝaphink
обычно программы будут вставлять свои собственные вещи в / var. В основном поставляемые поставщиком - журналы, некоторые библиотеки, файлы управления, файлы .pid, такие вещи. - David Mackintosh
Я не совсем согласен. Библиотеки, если они статичны, должны /usr, Динамически созданные библиотеки могут оказаться в /var/lib иногда, но я не понимаю, что вы на самом деле устанавливать в /var, с админ-точки зрения. Программа может использовать ее широко, но она должна быть довольно пустой, прежде чем запускать ее в программу. - ℝaphink
Сейчас единственное, что я намеренно установил в / var, это nfsen / nfdump, и это потому, что след приложения - это все файлы nfdump, которые он накапливает. (И потому, что это тестовая установка, которая каким-то образом сделала это для производства. Итак - «для отказа нет веских оснований».) Но это в значительной степени это. Конечно, поскольку я не разбиваю свой жесткий диск, / var, / opt и / usr все равно находятся в одной и той же файловой системе. - David Mackintosh
Qmail устанавливается в / var. Это одна из многочисленных критических замечаний. - staticsan


opt означает дополнительное программное обеспечение. var означает переменные системные файлы. Поэтому ваши приложения должны /opt,


2
2017-12-21 19:07



/var для варьируя системных файлов, а не «разных». - womble♦
/ var для «файлов переменных данных». Утверждение, что это для «различных системных файлов», является двусмысленным и потенциально обманчивым. o_O Вы правы насчет «opt». - phoenix8
@Eduard, а как насчет / opt / var? И </ usr / var>, </ usr / local / var> ... - Pacerier