Из FHS

Из FHS

У меня есть исполняемый файл для клиента контроля версий perforce ( p4). Я не могу поместить его в , /opt/localтак как у меня нет прав root. Есть ли стандартное место, куда его нужно поместить $HOME?

Существует ли в иерархии файловой системы соглашение, согласно которому локальные исполняемые/двоичные файлы должны размещаться в $HOME/bin?

Я не смог найти упоминания о такой конвенции наСтатья в Википедии о FHS.

Кроме того, если действительно существует соглашение, должен ли я явно указывать путь к каталогу $HOME/binили каково его местоположение bin?

решение1

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

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

  • $HOME/bin Локальные двоичные файлы
  • $HOME/etc Конфигурация системы, специфичная для хоста, для локальных двоичных файлов
  • $HOME/gamesЛокальные игровые двоичные файлы
  • $HOME/include Локальные заголовочные файлы C
  • $HOME/lib Местные библиотеки
  • $HOME/lib64Локальные 64-битные библиотеки
  • $HOME/man Местные онлайн-руководства
  • $HOME/sbin Локальные системные двоичные файлы
  • $HOME/shareЛокальная архитектурно-независимая иерархия
  • $HOME/src Локальный исходный код

При запуске configureнеобходимо определить локальную иерархию для установки, указав $HOMEв качестве префикса для значений по умолчанию установки.

./configure --prefix=$HOME

Теперь при make && make installзапуске скомпилированные двоичные файлы, пакеты, страницы руководства и библиотеки будут установлены в вашу $HOMEлокальную иерархию. Если вы вручную не создали $HOMEлокальную иерархию, make installсоздаст каталоги, необходимые для программного пакета.

После установки в $HOME/binвы можете либо добавить $HOME/binв ваш $PATH, либо вызвать двоичный файл с помощью absolute $PATH. Некоторые дистрибутивы будут включать $HOME/binв ваш $PATHпо умолчанию. Вы можете проверить это, либо echo $PATHпосмотрев, $HOME/binесть ли там, либо поместить двоичный файл в $HOME/binи выполнить which binaryname. Если он возвращается с $HOME/bin/binaryname, то он есть в вашем $PATHпо умолчанию.

решение2

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

Идея заключается в том, чтобы избежать конфликтов с распределенным программным обеспечением (таким как rpmи debпакеты) и предоставить администратору полный контроль над «локальным» префиксом.

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

Из FHS

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

При установке пользовательского программного обеспечения,утер предполагаетusing $HOMEв качестве префикса, поскольку это гарантирует, что у вас есть права на запись. Лично я считаю, что using $HOME/.local— более элегантное решение, поскольку оно позволяет избежать загромождения вашего (надеюсь) красивого и аккуратного домашнего каталога!

$HOME/.local/shareи $HOME/.local/binуже используются вfreedesktop.org Спецификация базового каталога XDG, и дистрибутивы должны добавляться $HOME/.local/binк $PATH, поэтому не составит большого труда представить себе создание $HOME/.local/libи т. д., пока вы этим занимаетесь.

Если вы на самом деле не хотите, чтобы ваш префикс был скрытым каталогом, вы можете легко создать на него символическую ссылку, например:

ln -s .local ~/local

Примечание

Стоит отметить, что .config(не .local/etc) является значением по умолчанию для$XDG_CONFIG_HOMEиспользуется для пользовательских конфигурационных файлов. Я также должен отметить, что, к сожалению, большая часть программного обеспечения игнорирует XDG и создает конфигурационные файлы там, где им вздумается (обычно в корне $HOME). Также обратите внимание, что это может быть не установлено, если желательно $XDG_CONFIG_HOMEзначение по умолчанию .$HOME/.config

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

решение3

Спецификация базового каталога XDGВ версии 0.8 указано, что локальные исполняемые файлы должны быть размещены в~/.local/bin:

Пользовательские исполняемые файлы могут храниться в $HOME/.local/bin. Дистрибутивы должны гарантировать, что этот каталог отображается в переменной среды UNIX $PATH в соответствующем месте.

Если ваш дистрибутив следует спецификации, вам не придется «явно указывать путь».предыдущий вопроспытается выяснить, какие дистрибутивы это делают.

решение4

Похоже, /usr/local/binсогласноИнтернет-сайт Wikitechy.

Информация о /usr/binотСтандарт иерархии файловой системы, они определяют папку как основной каталог исполняемых команд в системе.

Дополнительная информация между /usr/binпротив /usr/local/binотВикитехнология:

  /usr/binэто местоположение исполняемых файлов, предоставляемых ОС, которые используются обычными пользователями. Например, обычно не требуемые файлы основной операционной системы или файлы, доступные пользователю root, но могут быть.

  /usr/local/bin— это место хранения всех исполняемых файлов дополнений, которые вы добавляете в систему для использования всеми пользователями в качестве общих системных файлов, но которые не являются официальными файлами, поддерживаемыми ОС.

   В целом, /usr/binэто место, где находятся двоичные файлы, предоставляемые ОС. /usr/local/binЭто место, где находятся двоичные файлы, загруженные пользователем.

Связанный контент