Куда локальный исполняемый файл должен быть помещен?

Просто поместите встроенную новую строку в строке:

PS1='$(echo $?): $PWD
>> '
66
20.04.2012, 01:36
4 ответа

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

Если Вы - единственный пользователь двоичного файла, устанавливающего в $HOME/bin соответствующее местоположение, так как можно установить его сами, и Вы будете единственным потребителем. При компиляции пакета программного обеспечения из источника также уместно создать частичную или полную локальную иерархию в Вашем $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 локальная иерархия. Если Вы вручную не создали a $HOME локальная иерархия, make install создаст каталоги, необходимые пакету программного обеспечения.

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

68
27.01.2020, 19:31
  • 1
    пока $HOME не находится в смонтированной файловой системе noexec./tmp/обычно монтируется noexec также. А-ч –  ewanm89 19.04.2012, 20:24
  • 2
    Это корректно, его часть Стандарта иерархии файловой системы (FHS). pathname.com/fhs/pub/fhs-2.3.html#USRLOCALLOCALHIERARCHY –  Patrick 20.04.2012, 01:58
  • 3
    я не рекомендовал бы использовать $HOME. Это наводняет Ваш корневой каталог многочисленными каталогами, которыми Вы не интересуетесь вообще. Кто хочет иметь man, lib, и т.д. в размещают dir? Я создал бы иерархию ниже $HOME/bin или $HOME/local. Это добавляет только один подкаталог к Вашему домашнему dir, вместо десять. PATH может легко быть адаптирован для включения $HOME/bin/bin или $HOME/local/bin. –  Marco 03.05.2012, 03:43
  • 4
    Одна опция состоит в том, чтобы использовать $HOME/.local/{мусорное ведро, lib, и т.д.}, как используется, например, XDG basedir спецификация (standards.freedesktop.org/basedir-spec/basedir-spec-latest.html) и Python (python.org/dev/peps/pep-0370) –  janneb 28.05.2013, 22:20
  • 5
    Одна опция состоит в том, чтобы использовать $HOME/.local/{мусорное ведро, lib, и т.д.}, как используется, например, XDG basedir спецификация (standards.freedesktop.org/basedir-spec/basedir-spec-latest.html) и Python (python.org/dev/peps/pep-0370) –  janneb 28.05.2013, 22:20
  • 6
    @janneb Спецификация Базового каталога XDG Вы обращаетесь к упоминаниям только $HOME/.local/share (Версия 0.7, 24-го ноября 2010). –  Piotr Dobrogost 04.11.2015, 00:06

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

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

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

Из FHS

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

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

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

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

ln -s .local ~/local

Sidenote

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

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

28
27.01.2020, 19:31

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

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

Дополнительная информация между /usr/binи /usr/local/binиз Wikitechy:

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

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

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

0
20.08.2021, 13:26

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

User-specific executable files may be stored in $HOME/.local/bin. Distributions should ensure this directory shows up in the UNIX $PATH environment variable, at an appropriate place.

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

3
20.08.2021, 13:26

Теги

Похожие вопросы