/ usr / local или / opt?

44

Как вы обычно продолжаете установку пакетов в Linux, пакетов, которые не являются частью репозитория вашего дистрибутива?

Со своей стороны я привык устанавливать в / opt. Но с тех пор я увидел этот документ в Интернете: http://www.pathname.com/fhs/ . Теперь я в замешательстве: по-видимому, / usr / local также была бы возможность.

В чем разница между обоими? Любые лучшие практики, чтобы поделиться?

Благодарность

SirFabel


источник
Священная война, а не тема для программирования.
dmckee
1
Подобный вопрос в Спросите Ubuntu , суперпользователь , Unix и Linux
Kenchew

Ответы:

33
  • Все, что должно быть скомпилировано и установлено в стиле Unix и соответствует FHS ->/usr/local
  • Все остальное (например, Java-приложение, которое поставляется с собственным сервером приложений и множеством ресурсов в zip-архиве -> /opt
lajuette
источник
lintian больше не позволяет устанавливать пакеты в / opt и / usr / local
Cristiano
24

Так же, как дополнительная интересная информация: оригинальное значение /usr/localзаключается в том, что если /usrон монтируется в сети (один /usrобщий для нескольких компьютеров), то /usr/localэто будет отдельная файловая система, локальная для компьютера (раздел на локальном диске).

И хотя по этой теме, даже если это не по теме: если есть несколько компьютеров с разными архитектурами, естественно, будет один /usrдля каждой арки, но /usr/shareбудет еще одна отдельная файловая система, совместно используемая архитектурами (отсюда и «общий ресурс») ,


источник
5
Нет ... исторически (да, я был там!) / Usr и др. Имели материал, предоставленный вендором, / usr / local был локально установленным материалом (то есть bash, gcc и другими хорошими вещами).
vonbrand
@ vonbrand Ты действительно противоречишь ответу? Просто кажется, что все, что нужно разделить между хостами, будет / usr, а все, что не нужно, тоже будет в / usr / local
Дидье А.
@Didier A., ​​когда я начал использовать Unix (80-е годы), была одна машина, без сети ... и у них были / usr и / usr / local.
vonbrand
@ vonbrand О, я вижу, интересно. Тогда кажется, что первоначальное намерение иметь / usr и / usr / local все еще остается загадкой.
Дидье А.
@Didier A., ​​опять же: / usr был тем, что поставлялось вместе с операционной системой, «стандартными» вещами, / usr / local был локальными дополнениями (самодельный, получен из Usenet, снят с дружеской лиги на съезде, ...) , Не стандарт, просто общее использование.
vonbrand
7

Я делаю это так: если для этого требуется префикс к себе ИЛИ это двоичный пакет, я выбираю / opt (что в значительной степени относится к Solaris). Если я компилирую из источника / usr / local, как я иду.

подветренный
источник
6

Я помещаю все в личный каталог, а затем использую GNU stow .

Итак, я установлю пакет X.ver в /BASE/stow/X.ver. GNU урочище будет объединить все пакеты (с симлинками) в /BASE/bin, /BASE/libи т.д.

С конфликтами и удалением пакетов справиться гораздо проще.

R Самуэль Клатчко
источник
Обычно я использовал / usr / local / stow / <packagename> в качестве места для хранения «пакетов», и чувствую, что это хорошая практика - если кто-то еще заглядывает в / usr / local, это делает очевидным, что происходит и что Система поддерживает символические ссылки.
Стефани
3

Вот как я интерпретирую стандарт FHS:

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

/ opt - это место для установки «чужих» пакетов, не являющихся частью операционной системы.

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

Если вы планируете распространять свой пакет, я бы рекомендовал использовать пользовательский базовый каталог, такой как / opt / myPackage.

jlliagre
источник
2

Солярис использовал / опт много. Многие современные дистрибутивы Linux ожидают пакеты в / usr / local /. Идея та же - место для установки программного обеспечения, которое заставляет эту машину делать то, что она делает, в отличие от операционной системы. Это примерно аналогично "Program Files" в системе Windows.

Выберите один и придерживайтесь его. Достаточно просто вставить символическую ссылку / opt в / usr / local.

Кайл Ходжсон
источник
Мне нравится комментарий Ли, хороший способ думать о проблеме. Мне было бы немного странно иметь / opt на машине Debian, но это, вероятно, просто личное предпочтение.
Кайл Ходжсон
Пожалуйста, не надо. FHS может быть немного устаревшим, но он рассуждает о том, что / usr vs / usr / local vs / opt звучит нормально: стандартно, предоставляется дистрибуция; локально установленный, например, доморощенный или экспериментальный материал с github; предоставленные поставщиком нестандартные вещи.
vonbrand
0

Если вы перекомпилируете программное обеспечение, предоставляемое дистрибутивом операционной системы, для использования нескольких преимуществ архитектуры, характерных для вашего собственного компьютера, используйте / usr / local.

Если вы добавляете часть программного обеспечения из других источников, кроме дистрибутива операционной системы, поместите его в / opt.

cp7781
источник