Использование каталогов / opt и / usr / local в контексте ПК

65

В чем разница между каталогами /optи /usr/localкаталогами и какие программы должны быть на них установлены?

Я ссылался на иерархию файловых систем Linux, но объяснение не совсем понятно. По вышеуказанной ссылке;

/opt : - Этот каталог зарезервирован для всех пакетов программного обеспечения и надстроек, которые не являются частью установки по умолчанию

/usr/local: - /usr/localИерархия предназначена для использования системным администратором при локальной установке программного обеспечения. Он должен быть защищен от перезаписи при обновлении системного программного обеспечения.

В контексте ПК без каких-либо сетевых компьютеров, каким должен быть каталог для установки программного обеспечения, к которому будут обращаться несколько локальных пользователей? (т.е. где я должен установить программное обеспечение, например, NetBeans)

Спасибо

Niroshan
источник
4
Google Chrome optиспользует эту директорию по некоторым причинам.
Камило Мартин
2
@CamiloMartin Я думаю, это optионный.
becko
4
@becko Ну, это должно быть optнереальный выбор, если Google optего отредактировал .
Камило Мартин
3
Даже если вы все в порядке, optimus Prime звучит лучше.
erm3nda
2
Lol .. Я опоздал на вечеринку .. Но кажется, что вы, люди, много optизменили секцию комментариев ..: P
john400

Ответы:

71

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

Пример:

Sip-клиент с открытым исходным кодом, поставляемый как .deb, будет установлен в /usr. Если бы он был собран с каркасом Qt, apt включил бы его в качестве зависимости.

Тот же sip-клиент с открытым исходным кодом, созданный из исходного кода, будет находиться в нем, /usr/localпоэтому apt не будет испортить его, если позже вы установите пакет .deb для того же приложения. Вы можете либо построить его зависимости из исходного кода, либо получить их из менеджера пакетов.

Стороннее приложение /optдолжно быть автономным. Например, проприетарный sip-клиент, использующий Qt, не будет полагаться на версию из apt, но будет связывать ее или статически связывать.

Для получения дополнительной информации посмотрите на Стандарт Иерархии Файловой системы .

Эгиль
источник
1
Таким образом, netbeans идет в / usr / local, так как это зависит от jdk и других компиляторов + плюс он следует за Linux FHS?
Нирошан
1
Ответ - да.
Egil
1
Если я хочу установить condaглобально, как предложено здесь , это /optправильное место?
Алексей
@Egil, почему у Mac нет каталога opt?
Pacerier
Ранее я проголосовал за этот ответ, но теперь вижу, что его выводы немного отличаются от этой статьи в Linux Journal . В статье подразумевается, что для упакованного программного обеспечения важно, кто поставил пакет . Если пакет из пакета репо ОС, а затем он должен быть установлен под /usr(или, по- видимому, даже непосредственно под /bin, /libи т.д.) , как обычно. Если, однако, это из другого источника, то это должно быть введено в /usr/local. Это может включать .debв ответ «sip-клиент с открытым исходным кодом» .
Сампаблокупер
12

Я бы установил сторонние бинарные пакеты в /opt.

Все, что вы строите из источника, я бы добавил /usr/local.

netbeansнаходится в Ubuntu Repos. Вам нужна конкретная версия?

Broam
источник
Есть ли какое-то обоснование или просто хорошая практика? (Я упомянул NetBeans в качестве примера - я изменил эту часть, чтобы убрать любые неясности). Спасибо
Нирошан
Я думаю, что другие ответы сказали это лучше всего. Обычно сторонние двоичные файлы являются автономными.
Broam
Как насчет вещей, которые зависят от времени выполнения, таких как программное обеспечение Python или Java? Я бы надел их, /optно не уверен, что это правильно.
Камило Мартин
8

Все дело в упаковке. Если что-то упаковано способом LHS (помещая исполняемые файлы в bin / библиотеки в lib / и т. Д.), Оно должно идти в / usr / local.

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

Смотрите также Этот вопрос о суперпользователе

ДЕРЕВО
источник
Этот ответ, кажется, подтверждается этой статьей в Linux Journal .
Сампаблокупер