Почему мой пакет был установлен в / opt?

8

Некоторое время назад я установил couchdb из исходного кода на мою машину с Debian. Казалось установить нормально и все заработало.

Несколько недель спустя я хотел обновить и установить с .deb, используя dpkg. Кажется, теперь все установлено под /opt. Кажется, все работает нормально, но я не совсем понимаю, почему все это было установлено под /opt. Он не чувствует , как «гладкий» , как , когда вещи были установлены непосредственно в /usr/local/binи /etcи /var/log. Это более громоздко, чем когда я ранее редактировал файлы конфигурации, которые были установлены в / etc / couchdb

Не возражает ли кто-нибудь объяснить мне, почему установка на /opt«это хорошо» и почему это лучший способ сделать что-либо, чем предыдущая установка, которая была из источника?

Я знаю, что это довольно расплывчатый вопрос, но я только компетентен в Linux, не являюсь экспертом и не понимаю, что стоит за установкой /opt

Mikel
источник
Может быть, отсутствует тег / debian?
D4RIO
Вы говорите, что пакет Debian установлен в / opt? Если это так, он делает не то. У меня также есть приложение Google Chrome (в настоящее время не установлено), которое установлено в / opt. Все, что управляется системой пакетов, должно входить в основную систему.
Фахим Мита
Внимательно изучив этот вопрос, я не смог найти в политике четкого заявления о том, что установка пакетов Debian (независимо от того, является ли она официальной или нет) не должна устанавливаться в / opt, хотя у меня сложилось впечатление, что этого делать не следует, и Различные комментарии в сети, что это неправильно. Если я найду что-то более определенное, я опубликую это. AFAIK, Debian не ожидает и не требует установки неофициальных пакетов в месте, отличном от официальных пакетов.
Фахим Мита

Ответы:

10

Filesystem Hierarchy Standard дает следующие определения:

  • /opt : Дополнительные прикладные программные пакеты
  • /usr/local : Локальная иерархия (для использования системным администратором при локальной установке программного обеспечения)

То, как я это прочитал:

  • Стандартные системные приложения должны войти /binи /usr/bin(подразумевается)
  • Сторонние пакеты должны идти в /opt
  • Что-то должно быть установлено только, /usr/localесли системный администратор хочет, чтобы это

К тому же, если системный администратор устанавливает что- dpkgлибо rpm, используя или , он не должен входить /usr/localпо умолчанию.

Так что это возможно делает правильные вещи.

Mikel
источник
Сервер приложений IBM Websphere входит в / opt. Кроме того, когда я устанавливаю что-то вроде IBM JDK, я помещаю это в / opt / java.
Джангофан
5

Политика Debian гласит:

9.1.2 Программы для конкретного сайта

В соответствии с требованиями FHS, пакеты не должны помещать какие-либо файлы /usr/local, помещая их в архив файловой системы для распаковки dpkg или манипулируя ими в своих сценариях сопровождающего.

Там нет такого конкретного запрета против /opt. Политика также добавляет

Расположение всех установленных файлов и каталогов должно соответствовать Стандарту иерархии файловых систем (FHS), версия 2.3, с исключениями, указанными ниже, за исключением случаев, когда это нарушает другие условия Политики Debian.

и стандарт файловой иерархии говорит

Каталоги /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib, и /opt/manзарезервированы для использования локального системного администратора.

а затем дальше вниз

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

Обратите внимание, что политика предназначена для самого Debian, но в целом соответствует рекомендациям. В результате, если я правильно читаю, установка двоичных (deb) пакетов не разрешена /usr/local, но установка в порядке, /optесли она не мешает использованию пространства системным администратором.

Мое личное мнение таково, что плохая идея иметь пакеты deb в одном /usr/localили в /opt. Я не согласен с D4RIO, когда он говорит:

Существует пакет CouchDB для Debian (я имею в виду, официальный), так что если вы загрузили другой, это нормально, он должен быть установлен в /optили /usr/local/binлибо.

Как правило, вам не нужны два разных deb-пакета, соответствующих одному и тому же установленному программному обеспечению, и, если они на самом деле имеют одинаковое имя пакета, dpkg все равно не допустит этого. Неофициальные пакеты программного обеспечения Debian, доступные как официальные пакеты, обычно (но не всегда) имеют то же имя, что и официальные; Вы просто устанавливаете один или другой, а не оба.

Что бы это ни стоило, я думаю, что помещать пакеты deb /opt- плохая идея, и единственное, что я видел в последнее время, - это Google Chrome. Однако Google не всегда следует передовым методам.

Фахим Митха
источник
Полностью согласен, что пакет не должен устанавливаться в / opt, особенно если он помещает файлы в другое место, например, в / usr / bin. Imho / opt должен содержать полностью автономное программное обеспечение, чтобы вы могли убрать его с орбиты, просто удалив его из / opt.
Arrowmaster
Хорошо, отличные ответы, спасибо, но по умолчанию он установлен в / opt. Если нет / opt, то куда мне его установить? И как это сделать с помощью dpkg?
@Duke: Если вы можете получить источник пакета deb, вы можете пересобрать deb для установки в систему, как обычные пакеты. Это потребует немного работы, если вы еще не знакомы с процедурой, но, думаю, это то, что нужно делать здесь.
Фахим Митха
1
не согласен с этим ответом. Существует множество ситуаций, когда вам нужно установить две версии программного обеспечения, вы можете легко выбрать конкретный python для конкретного приложения. Местный системный администратор может захотеть упаковать этот питон, куда он должен идти? Локально установленное (make install) программное обеспечение находится в / usr / local, 3-е упакованное программное обеспечение входит в / opt / - определение пакетов остается широким: через dpkg, через установщики, через PIP, через (вставьте выбранную систему упаковки). Я согласен, что это хорошая практика автономных «провайдеров / пакетов».
ясень
4

/optдля стороннего программного обеспечения. Существует CouchDB пакет для Debian (я имею в виду, официальный), так что если вы загрузили другой, это нормально, он должен быть установлен в /optили /usr/local/binлибо.

D4RIO
источник
2

Несмотря на то, что это не Debian, в Руководстве по пакетированию Fedora об этом ясно сказано :

… Ни один пакет Fedora не может иметь никаких файлов или каталогов в / opt или / usr / local…

Причина, по которой пакеты не помещают вещи в / opt, довольно проста: как указывалось ранее, Стандарт файловой иерархии утверждает, что…

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

Это то, что не может быть гарантировано пакетами, поскольку установка или обновление может изменить такие данные.

Я знаю, что Fedora не Debian, но я думаю, что в этом случае они очень похожи. Тем более что Lintian, инструмент проверки пакетов для Debian, имеет специальную ошибку для этого: dir-or-file-in-opt

Ларс Кисов
источник