/usr /bin vs /usr /local /bin в Linux
Почему в Linux так много мест для размещения бинарных файлов? Есть по крайней мере эти пять:
-
/bin/
-
/sbin/
-
/usr/bin/
-
/usr/local/bin/
-
/usr/local/sbin/
И в моем офисном ящике у меня нет прав на запись для некоторых из них.
Какой тип двоичного файла входит в какой из этих bin
s?
5 ответов
-
/bin
(и/sbin
) предназначены для программ, которые должны быть на небольшом сегменте/
, перед тем, как увеличить/usr
и т. д. были установлены разделы. В наши дни он в основном служит стандартным местом для ключевых программ, таких как/bin/sh
, хотя исходное намерение может по-прежнему иметь значение, например. установки на небольших встроенных устройствах. -
/sbin
, в отличие от/bin
, предназначен для программ управления системой (обычно не используемых обычными пользователями), необходимых до/usr
. -
/usr/bin
предназначен для обычных пользовательских программ, управляемых дистрибутивом. -
Существует
/usr/sbin
с тем же отношением к/usr/bin
, что/sbin
должен/bin
. -
/usr/local/bin
предназначен для обычных пользовательских программ not , управляемых менеджером пакетов распространения, например. локально скомпилированные пакеты. Вы не должны устанавливать их в/usr/bin
, потому что будущие обновления могут изменять или удалять их без предупреждения. -
/usr/local/sbin
, как вы можете догадаться, на этот момент, это/usr/local/bin
как/usr/sbin
в/usr/bin
.
Кроме того, существует также /opt
, который предназначен для монолитных пакетов нераспространения, хотя до того, как они были правильно интегрированы, различные дистрибутивы размещали Gnome и KDE. Как правило, вы должны зарезервировать его для больших, некачественных пакетов сторонних производителей, таких как Oracle.
Я рекомендую взглянуть на справочную страницу иерархии файловой системы:
man hier
, который также доступен в Интернете, например: http://linux.die.net/man/7/hier
Стандартная иерархия файловой системы в Википедии помогла мне ответить на тот же вопрос, когда у меня было это, плюс это очень пояснительная таблица.
Каталоги sbin
содержат программы, которые обычно являются системным администрированием. Программы для обычных пользователей никогда не должны входить в них.
Во время запуска требуется несколько программ, и они заканчиваются в /bin/
или /sbin/
. Они должны быть доступны до установки файловых систем. Такие вещи, как mount
и fsck
, которые необходимы для проверки и монтирования файловых систем, должны быть там.
Большинство упакованных программ заканчиваются на /usr/bin/
и /usr/sbin/
. Они могут быть в файловой системе, отличной от корневой файловой системы. В некоторых случаях они могут быть подключены к сети.
Локальные программы и скрипты принадлежат /usr/local/bin/
и /usr/local/sbin/
. Это идентифицирует их как явно нестандартные и, возможно, только доступные на сайте.
Для дальнейшего объяснения попробуйте запустить команду man hier
, которая должна предоставить описание рекомендуемой иерархии файловой системы для вашего дистрибутива. Вы также можете прочитать о иерархии файловой системы в Википедии
В 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 не приняли это решение ....