
У меня есть исполняемый файл для клиента контроля версий 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
Это место, где находятся двоичные файлы, загруженные пользователем.