Где при установке пользовательских приложений «лучшие практики» предполагают их нахождение?


210

Изредка я устанавливаю приложения вручную, а не с помощью aptили другого менеджера пакетов.

Что место ( /usr/, /usr/local/, /opt/, /home/и т.д.) было предложено «наилучшей практики» для установки пользовательских приложений?


Любя время от времени устанавливать объекты из исходного кода, я написал для этого небольшой инструмент, который самостоятельно вносит изменения в файл запуска вашей оболочки (а также изменяет префикс библиотеки, если вы этого просите) для программ, которые зависят от разделяемых библиотек. ). Не очень многофункциональный, но он работает в 99% случаев.
new123456

Связанный пост: askubuntu.com/q/138547/62483
Лусио

1
Большая дискуссия о различии между /optи /usr/local: unix.stackexchange.com/q/11544/11917
Blong

Ответы:


184

Это зависит, действительно. Если у приложения есть make-файл или, например, для приложений на python, если приложение использует distutils (например, имеет setup.pyфайл), или подобную систему сборки / установки, вы должны установить ее в /usr/local/. Это часто - поведение по умолчанию.

Из того, что я понимаю, /usr/local/есть иерархия, которая похожа на /usr/. Однако такие каталоги, как /usr/bin/и /usr/lib/обычно, зарезервированы для установки пакетов через apt. Таким образом, программа, ожидающая установки, /usr/должна нормально работать /usr/local/.

Если вам просто нужно извлечь tarball и запустить его напрямую (например, Firefox), поместите его в /opt/. Программа, которая нуждается только в одном каталоге и получит все файлы / библиотеки, относящиеся к этому каталогу, может получить один каталог для себя /opt/.


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

3
Создайте символическую ссылку из / usr / bin или добавьте ее в PATH в ~ / .bashrc
Alex

1
Как насчет ~/.local/share? @Marco
Ultimatex

1
Вы можете установить вещи внутри ~(ваш домашний каталог), но это сделает приложение доступным только одному пользователю. Другие пользователи вашей системы должны будут установить и поддерживать свои собственные установки этого программного обеспечения. Что касается рекомендаций по установке приложений, устанавливающих домашний каталог, я считаю, что таких строгих рекомендаций нет, поскольку вы не будете мешать системным пакетам.
Уманг

1
Неправильно ли устанавливать приложения, которые «разархивированы из tar», в / home / ubuntu / myapp - что это делает по сравнению с / opt / myapp?
JARC

116

Хорошо помнить, что это /usrозначает не пользовательские, а системные ресурсы unix .

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

Между тем, приложения и другие вещи входят /opt.

Некоторые люди чувствуют себя комфортно /home, хотя я редко следую этому соглашению.

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


35
Стоит помнить, что «системные ресурсы Unix» - это переименование, выполненное ПОСЛЕ добавления / home. В старые, старые, старые времена (Unix версии 6 и т. Д.) Вы видели такие каталоги, как / usr / jimmy, / usr / siobhan, / usr / ahmed и т. Д., Поскольку каталоги "user" хранились в / usr ,
Марк Лейтон Фишер

5
Хорошо, я укушу: что означает opt?
Сет

3
@ Я думаю, что это «необязательно» - изначально оно было предназначено для программного обеспечения, которое не было частью установки по умолчанию.
Карл Х

5
/ usr есть User. Это потому, что пользователи Linux были разработчиками. Во-первых, он начал делиться на разработчиков и пользователей /home. А потом кто - то пришла в голову идея сказать , что это означает Unix System Resources, что на самом деле не имеет смысла, потому что мы имеем Unix system Resourcesин/dev
Info-экран

2
Правильно, / usr является обратным. Цель изменилась с тех пор, как Unix работал на PDP-7 в 1969 году.
Уолт Стоунбернер

34

Установите нестабильные программы, такие как firefox devel, в / home / user / opt /, чтобы их было легче удалить, и у других пользователей не возникнет путаницы в отношении того, какую версию им следует использовать ... Так что, если это не программа для глобального использования, установите это в подпапке в вашем домашнем каталоге.

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

/ opt / следует использовать для установки предварительно скомпилированных (двоичных) пакетов (Thunderbird, Eclipse, Netbeans, IBM NetSphere и т. д.) и тому подобное. Но если они предназначены только для одного пользователя, они должны быть помещены в ваш домашний каталог.

Если вы хотите иметь возможность запускать программу, установленную в «странном» месте (например, / home / user / opt / firefox /) без ввода полного пути, вам нужно добавить ее в переменную $ PATH, вы можете сделать это следующим образом: добавив такую ​​строку в ваш /home/user/.profile

export PATH=/home/user/opt/firefox:$PATH

Имя папки должно быть тем, где находится исполняемый файл, который вам нужно запустить.


26

Стандарт иерархии файловой системы Linux указывает /usr/local.

От http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html :

Первоначально идея «/ usr / local» заключалась в том, чтобы на каждой машине был отдельный каталог («local») «/ usr», кроме «/ usr», который мог быть просто смонтирован только для чтения откуда-то еще. Он копирует структуру / usr. В наши дни «/ usr / local» широко рассматривается как хорошее место для хранения самостоятельно скомпилированных или сторонних программ. Иерархия / usr / local предназначена для использования системным администратором при локальной установке программного обеспечения. Он должен быть защищен от перезаписи при обновлении системного программного обеспечения. Он может использоваться для программ и данных, которые являются общими для группы хостов, но не найдены в / usr. Локально установленное программное обеспечение должно быть размещено в / usr / local, а не / usr, если оно не устанавливается для замены или обновления программного обеспечения в / usr.


1
Кажется, противоречит этому материалу / usr / local с информацией на странице opt: tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html "" Этот каталог зарезервирован для всего программного обеспечения и дополнительных пакетов, которые не являются частью установки по умолчанию. Например, пакеты StarOffice, Kylix, Netscape Communicator и WordPerfect обычно находятся здесь. Для соответствия требованиям FSSTND все сторонние приложения должны быть установлены в этот каталог. "..." (аналогично тому, как Windows будет устанавливать новое программное обеспечение в собственное дерево каталогов C: \ Windows \ Progam Files \ "Имя программы ")"
Pod

6

У меня обычно есть папка с именем «Программы» в моем доме, где я устанавливаю эти программы, как ни странно (или нет), все они прямо сейчас java.

У меня есть одно большое преимущество, когда я переустанавливаю или меняю компьютеры, они перемещаются вместе с остальной частью моего дома. У него есть явный недостаток, эти приложения доступны только моему пользователю.


Как я могу переустановить Ubuntu 16.04 без потери данных в домашней папке? Я попытался сделать с помощью /директории форматирования только затем, введя то же старое имя пользователя и пароль, но обнаружил, что Ubuntu создает другую домашнюю папку.
Ибрагим Дисуки

1

Используйте "checkinstall", чтобы преобразовать ваш инопланетный пакет в deb, чтобы его можно было удалить с помощью менеджера пакетов.

Обратите внимание, что файлы конфигурации часто не обрабатываются как файлы конфигурации (возможно, игнорируются или, возможно, рассматриваются как часть приложения), и что сценарии до и после установки иногда путаются, хотя обычно они предупреждают вас, когда считают, что У deb будет плохой сценарий до или после установки.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.