При установке пользовательских приложений, где "лучшие практики" предполагают, что они должны быть расположены?

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

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

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

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

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

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

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

Тем временем приложения и другие вещи поступают в /opt.

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

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

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

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

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

Если вы хотите иметь возможность запускать программу, установленную в "странном" месте (например, /home /user /opt /firefox /), не вводя весь путь, который вам нужно добавить в свою переменную $PATH, вы можете сделать это, добавив такую строку в свой /home /пользователь/.профиль

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

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

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

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

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

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

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

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

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

Отличная дискуссия о различии между /opt и /usr/local : directory structure - What is the difference between /opt and /usr/local? - Unix & Linux Stack Exchange

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

Сообщение по теме: filesystem - How to understand the Ubuntu file system layout? - Ask Ubuntu

Also see the “Purpose” subsections in the Filesystem Hierarchy Standard.