it-swarm-ru.tech

/ usr / bin vs / usr / local / bin в Linux

Почему в Linux так много мест для размещения двоичного файла? Есть как минимум эти пять:

  1. /bin/
  2. /sbin/
  3. /usr/bin/
  4. /usr/local/bin/
  5. /usr/local/sbin/

И на моем офисном ящике у меня нет разрешений на запись для некоторых из них.

Какой тип двоичного файла входит в какой из этих bins?

487
Lazer
  1. /bin (а также /sbin) были предназначены для программ, которые должны были быть на небольшом / раздел перед большим /usr и ​​т. д. разделы были смонтированы. В наши дни он в основном служит стандартным местом для таких ключевых программ, как /bin/sh, хотя первоначальное намерение все еще может иметь значение, например, для установки на небольшие встроенные устройства.

  2. /sbin, в отличие от /bin, для программ управления системой (обычно не используемых обычными пользователями), необходимых перед /usr установлен.

  3. /usr/bin для обычных пользовательских программ, управляемых распространением.

  4. Eсть /usr/sbin с таким же отношением к /usr/bin в виде /sbin должен /bin.

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

  6. /usr/local/sbin, как вы можете догадаться на данный момент, это /usr/local/bin в виде /usr/sbin до /usr/bin.

Кроме того, есть также /opt для монолитных нераспространяемых пакетов, хотя до того, как они были должным образом интегрированы, различные дистрибутивы помещали туда Gnome и KDE. Как правило, вы должны зарезервировать его для больших пакетов с плохим поведением, таких как Oracle.

600
geekosaur

Я рекомендую взглянуть на справочную страницу по иерархии файловой системы:

man hier

который также доступен онлайн, например: http://linux.die.net/man/7/hier . Соответствующие части были скопированы ниже. В зависимости от вашей системы, он может сказать что-то другое.

Имя

    hier - описание иерархии файловой системы

Описание

    Типичная система Linux имеет, среди прочего, следующие каталоги:

    /bin
      Этот каталог содержит исполняемые программы, которые необходимы в однопользовательском режиме и для запуска системы или ее восстановления.
    /sbin
      Подобно /bin, этот каталог содержит команды, необходимые для загрузки системы, но которые обычно не выполняются обычными пользователями.
    /usr/bin
      Это основной каталог для исполняемых программ. Большинство программ, выполняемых обычными пользователями, которые не нужны для загрузки или восстановления системы и которые не установлены локально, должны быть помещены в этот каталог.
    /usr/local/bin
      Двоичные файлы для локальных программ сайта.
    /usr/local/sbin
      Локально установленные программы для системного администрирования.
    /usr/sbin
      Этот каталог содержит двоичные файлы программы для системного администрирования, которые не важны для процесса загрузки, для монтирования /usr, или для ремонта системы.
69
davitenio

Запись Стандарт иерархии файловой системы в Википедии помогла мне ответить на тот же вопрос, когда он у меня был, плюс у него очень пояснительная таблица.

Выдержка из этой страницы1:

/bin        Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp.
/usr/bin    Non-essential command binaries (not needed in single user mode); for all users.
/usr/local  Tertiary hierarchy for local data, specific to this Host. Typically has further subdirectories, e.g., bin, lib, share
/usr/sbin   Non-essential system binaries, e.g., daemons for various network-services.
/sbin       Essential system binaries, e.g., fsck, init, route.

1Получено 19 июня 2019 года; Permalink .

36
Humphrey Bogart

Каталоги sbin содержат программы, которые обычно предназначены только для системного администрирования. Программы для постоянных пользователей никогда не должны заходить в них.

Во время запуска требуется несколько программ, которые заканчиваются на /bin/ или /sbin/. Они должны быть доступны до монтирования файловых систем. Должны быть такие вещи, как mount и ​​fsck, необходимые для проверки и монтирования файловых систем.

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

Локальные программы и скрипты принадлежат /usr/local/bin/ а также /usr/local/sbin/. Это идентифицирует их как явно нестандартные и, возможно, доступные только на сайте.

Для дальнейшего объяснения попробуйте выполнить команду man hier которая должна содержать описание рекомендуемой иерархии файловой системы для вашего дистрибутива. Вы также можете прочитать об Иерархия файловой системы в Википедии

17
BillThor

В 1970-х у UNIX были все официальные исполняемые файлы в /bin а также /usr/bin был местом под домашними каталогами пользователей (например, /usr/dmr) это было доступно любому пользователю для хранения собственных двоичных файлов, которые могли бы быть интересны и для других.

Результат этого открытия /usr/bin был хламом незарегистрированного программного обеспечения, и поэтому Stephen Bourne написал cron script, который проверял наличие новых двоичных файлов каждую ночь и удалял все двоичные файлы, у которых не было документации или которые были обновлены без обновления их документации.

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

Через некоторое время сисадмины использовали /usr/local/bin хранить non-local программное обеспечение, которое было импортировано из сети (например, USENET) и поскольку компании UNIX не хотели повторять ту же ошибку, что и /usr/bin снова, в 1987 году была конференция по иерархии файловых систем, на которой все компании UNIX согласились отказаться /usr/local/bin и ​​использовать /opt/<vendor>/bin вместо.

К сожалению, дистрибутивы Linux не последовали этому решению ....

11
schily