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


445

Чому в Linux так багато місць, щоб поставити двійковий файл? Є принаймні ці п'ять:

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

І на своєму офісному скриньці я не маю дозволів на написання деяких із них.

Який тип двійкового коду входить у який із цих bins?


28
Ти забув /usr/sbin/.
Привіт71

15
І ~/bin/для особистих речей.
Кальмарій

1
На сьогоднішній день є менше місць, оскільки їх /binбуло об'єднано /usr/binта /sbinоб'єднано /usr/sbin- див . Справу щодо / usr Merge .
Пьотр Доброгост,

Питання, пов’язані з цим: askubuntu.com/questions/308045/…
Габріель

@Calmarius, що? ви не повинні використовувати /usr/local/bin?
Pacerier

Відповіді:


558
  1. /bin/sbin) були призначені для програм, які мали бути на невеликій /перегородці до того /usr, як були встановлені більші тощо. У наші дні він здебільшого слугує стандартним місцем для таких ключових програм /bin/sh, хоча початковий намір все ще може бути актуальним, наприклад, для встановлення на невеликих вбудованих пристроях.

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

  3. /usr/bin призначений для звичайних програм, керованих дистрибуцією.

  4. Існує таке /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.


37
Я думаю, що ця відповідь чудово справляється з роз'ясненням загального набору конвенцій, але ця публікація від Роб Лендлі - це справді чудове прочитання, якщо ви хочете ознайомитись з нісенітницею ... list.busybox.net/pipermail/busybox/2010-December /074114.html
Subfuzion

3
refspecs.linuxfoundation.org/fhs.shtml для поточної канонічної посилання. Посилання від @kojiro застаріле і не має нової специфікації.
Дідьє А.

2
Куди я кладу контейнер, який я завантажив з Інтернету? З вашого опису здається, що він повинен зайти в / usr / local / bin або / usr / bin. Чи / usr / bin щось, до чого я ніколи не повинен торкатися вручну, і нехай грає лише менеджер пакунків?
Дідьє А.

3
@DidierA. помістіть його ~/binта додайте цей каталог у свій PATH як користувач ... Дякую за замітку, я видалив свій серйозно застарілий коментар.
kojiro

3
Я знайшов відповідь на першу частину свого запитання тут: superuser.com/a/238993/425838 . Пріоритетність базується на порядку в системній PATHзмінній, і echo $PATHдля мене показано /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games, що означає, що виконувані файли /usr/local/binмають перевагу над тими, у /usr/binяких мають перевагу над вхідними /bin.
Габріель Степлес

65

Рекомендую переглянути сторінку ієрархії файлової системи:

man hier

Що також доступне в Інтернеті, наприклад: http://linux.die.net/man/7/hier


1
Це не відповідає на запитання користувача.
Біллі ONeal

14
Сторінка "man" містить запис для кожного з каталогів bin, в якому пояснюється, що йде в них, що було одним із питань.
davitenio

34

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

Витяг із цієї сторінки 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 року; постійна посилання .


17

В sbinдиректорії містить програми , які зазвичай тільки систему управління. Програми для постійних користувачів ніколи не повинні входити в них.

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

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

Місцеві програми та сценарії належать до /usr/local/bin/та /usr/local/sbin/. Це визначає їх як явно нестандартні та, можливо, доступні лише на сайті.

Для подальшого пояснення спробуйте запустити команду, man hierяка повинна містити опис рекомендованої ієрархії файлової системи для вашого розповсюдження. Ви також можете прочитати про Ієрархію файлової системи у Вікіпедії


1
+1 Дійсно стисле пояснення, якщо верх трохи завеликий.
CppLearner

"Локальні програми та сценарії належать у / usr / local / bin / та / usr / local / sbin /" - Ви маєте на увазі локальні програми як у "зовсім не в ОС, але я вирішив їх встановити і хочу використовувати їх" "?
Джим Ахо

11

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

Підсумком цього відкритого відкритого проекту /usr/binбуло непотрібне документоване програмне забезпечення, і тому він Stephen Bourneнаписав cron scriptте, що щовечора перевіряв наявність нових бінарних файлів та видаляв усі бінарні файли, на яких не було документації, або які були оновлені без оновлення документації.

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

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

На жаль, дистрибутив Linux не дотримувався цього рішення ....


Хоча це дуже цікаво, нічого з цього навіть не намагається відповісти на поставлене питання, яке стосувалося /optне про UNIX, а не про Linux. Це як відповідь "Чому у автомобілів 4 колеса?" "Велосипеди мають 2! На жаль, автомобілів немає". що не допомагає ОП зрозуміти, чому машини мають 4.
terdon

2
Якщо ви не можете використати дане пояснення як пояснення тла Linux і того, що Linux любить імітувати UNIX, можливо, вам не вистачить потрібного фону.
schily

1
Цікаво, але щось я плутаю і що, можливо, теж є лише історичним. Сьогодні завантаження кошика в Інтернеті та кошика компанії не дуже відрізняється. Якщо Джо Blow робить програму, і я завантажую її, чому б не поставити її в / opt / JowBlow / bin замість / usr / local / bin. Це питання надійного постачальника порівняно з недовіреним? Здається, це не має для мене сенсу.
Дідьє А.

1
Я б хотів, щоб я знав цю "точну" історію кілька років тому. а) Мені було цікаво, чому AIX уникає / usr / local, використовує / opt / IBM та / opt / ibm та bullfreeware використовує / opt / freeware - і чому я ДОЛЖЕН би використовувати інший шлях (не тільки / opt / * sbin). Що стосується напіввідповідності для Linux - кращі інструменти GNU - типовим - префікс у автоматичних інструментах є / usr / local. Занадто погано Autotools (Automake, Autoconf і так далі не буде ... Але всі ми вижити і дізнатися , де distrub || виробники поставили свої програми ...
Майкл Felt

Чи могли б ми провести ще одну з цих конференцій? Якраз цього разу, КОЖНА ЛЮДИНА!
MemphiZ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.