Що таке / usr / local / bin?


85

До сьогодні я використовував термінал в обмеженій мірі для переміщення та виходу з каталогів та зміни дат файлів за допомогою touchкоманди. Я усвідомив усю міру терміналу після встановлення веселого сценарію на Mac і змушений chmod 755у файл, щоб зробити його виконуваним згодом.

Я хотів би знати, що /usr/local/binце таке. /usr/, Я припускаю, це користувач комп’ютера. Я не впевнений, чому /local/там. Це, очевидно, означає місцевий комп'ютер, але оскільки він знаходиться на комп'ютері (або сервері), чи справді це було б потрібно? Не /usr/binбуло б добре?

А що таке /bin? Чому ця область зазвичай використовується для встановлення скриптів на термінал?

Відповіді:


77

/usr/local/bin призначений для програм, які може запускати звичайний користувач.

  • /usr/localІєрархія для використання системного адміністратора при установці програмного забезпечення на місцевому рівні.
  • Це повинно бути захищено від перезапису при оновленні системного програмного забезпечення.
  • Він може бути використаний для програм і даних, які можуть бути доступними для групи хостів, але не знайдені в /usr.
  • Місцеве програмне забезпечення повинно розміщуватися в межах, /usr/localа не / usr, якщо воно не встановлюється для заміни або оновлення програмного забезпечення в /usr.

Це джерело допомагає пояснити стандарт ієрархії файлової системи на більш глибокому рівні.

Ви можете знайти цю статтю про використання та зловживання/usr/local/bin цікавими також.


"" "якщо вона не встановлюється для заміни або оновлення програмного забезпечення в / usr" "" значення?
Pacerier

63

/ usr /, я вважаю, що це користувач комп’ютера.

Закрити.

Unix почався як багатокористувацька операційна система, тому це не "користувач", це " користувачі ", множина.

До того, як AT&T Unix System V випуску 4 (SVR4) вийшов у 1988 році, його інструменти для управління користувачами дефолтом були створені домашні каталоги користувачів у /homeзвичайному розташуванні. /usr¹ Ваш $HOMEкаталог, можливо, знаходився /usr/jfwу вікні System III .

/usrміститься також, як і зараз, /usr/bin, /usr/libі т.д. Досвід показав , що сегрегація домашніх каталогів була хороша практикою управління системою, так і з /homeзміною політики в SVR4, він залишив позаду всі ми тепер думаємо, як належать до /usr.

/usrвсе-таки була вагома причина затриматися на імені: те, що залишилося позаду, - це файли, які не потребували доступності, поки система не була завантажена достатньо далеко для підтримки нормального інтерактивного використання. Тобто, те, що залишилося позаду, були орієнтовані користувачем частини ОС. Це означало, що це /usrможе бути різний фізичний об'єм, що було хорошою справою ще за часів накопичувача на жорсткому диску 92 Мб розміром з пральні машини .

Ранні системи Unix були обережні, щоб не /usrвиключати основні файли ОС, щоб ви все ще могли завантажуватися в режимі однокористувача², навіть якщо /usrгучність з якихось причин неможливо змінити . Кореневий об'єм містив достатньо інструментів для /usrповернення обсягу в Інтернеті.

Кілька ароматів Unix в даний час не ігнорувати цей старий принцип конструкції , так як навіть невеликі вбудовані системи мають достатньо місць як для традиційних об'ємних кореневих файлів і все /usrна одному volume.³ Red Hat Enterprise Linux, Solaris і Cygwin SYMLINK /binдо /usr/binі /libдо /usr/libтак що немає довше будь-яка різниця між цими каталогами.

... / local / ... очевидно означає місцевий комп'ютер ...

Так. Він посилається на той факт, що файли під /usr/localцим повинен бути специфічним для цієї єдиної системи. Файли, які будь-яким чином є загальними, повинні жити в іншому місці.

Це також має коріння у тому, як системи Unix зазвичай використовувалися десятиліття тому, коли все це було стандартизовано. Знову ж таки, жорсткі диски того часу були громіздкими, по-справжньому дорогими і мало зберігалися за сучасними мірками. Щоб заощадити гроші та місце на дисках, у комп’ютерній лабораторії, наповненій коробками Unix, часто можна ділитися більшістю /usrNFS або якогось іншого протоколу обміну мережевими файлами, тому в кожному вікні не повинно бути власної зайвої копії.⁴ Файли, характерні для однієї поле піде внизу /usr/local, що буде окремим томом від /usr.

Ця історична спадщина є причиною встановлення більшості сторонніх програм Unix за замовчуванням для /usr/localвстановлення вручну. Більшість такого програмного забезпечення дозволить вам встановити пакунок десь в іншому місці, але, не роблячи вибір, ви отримуєте безпечний замовчування, який не заважає іншим загальним місцям встановлення з більш конкретними цілями.

Є вагомі причини, щоб змусити програмне забезпечення інше замість цього. Команда компанії Apple MacOS робить це , коли вони будують, скажімо, bashз вихідного коду GNU Bash . Вони використовують /як інсталяційний префікс, змінюючи /usr/localтиповий параметр, так що Bash закінчується в /bin.

Іншим прикладом є те, як старі системи Linux поділили програмне забезпечення на GUI /usr/X11R6, щоб вони не були відокремлені від традиційного командного рядка та cursesпрограмного забезпечення на базі даних. Це було зроблено просто шляхом заміни /usr/localпрефіксу за замовчуванням на /usr/X11R6.⁵

А що таке / бін?

Це коротке слово "двійковий", що в цьому контексті означає "файл, який не є простим текстом". Більшість таких файлів є виконуваними файлами у вікні Unix, тому ці два терміни стали синонімами в деяких колах. ("Будь ласка, побудуйте мені двійковий код для RHEL 7, Fred.")

Текстові файли на коробці Unix живуть в іншому місці: /etc, /usr/include, /usr/shareі т.д.

Колись навіть сценарії оболонки - це звичайні текстові файли - залишалися поза binкаталогами, але цей рядок теж розмився. Сьогодні binкаталоги зазвичай містять будь-який виконуваний файл, будь то суто "двійковий" чи ні.⁶


Виноски та відступи :

  1. Первісний характер інструментів управління користувачами до SVR4 означав, що HOME=/usr/$NAMEсхема була просто задокументована як конвенція, а не застосовувалася програмними засобами як за замовчуванням.

    Це можна побачити на сторінці 4-8 " AT&T Unix System V Release 3.2" Посібник для системного адміністратора : тут ви бачите, що AT&T рекомендує стару /usr/$NAMEсхему в останній великій версії Unix до виходу SVR4.

    У старих системах Unix було досить поширено, щоб системні адміністратори обирали іншу схему, яка мала для них більше сенсу. Люди, що є людьми, значили багато різних схем.

    Одна зі схем, з якими я стикався раніше, /home/$NAMEстала стандартною /u/$NAME.

    Ще одна система , яку я використовував на початку 1990 - х років було дуже багато користувачів , що вони не можуть поміститися всі домашні каталоги на одному фізичному томі, тому вони використовували схему , як /u1/$NAME, /u2/$NAMEі так далі, як я пам'ятаю. На якому диску у вашому домашньому каталозі опинився просто питання про те, на якому місці було місце в момент створення вашого облікового запису.

  2. Ви можете завантажувати поле macOS в режимі однокористування, утримуючи його, Cmd-Sпоки він не завантажується. Відпустіть, як тільки екран стане чорним, і ви побачите світло-сірий текст. Це як би працювати під Терміналом, але він переймає весь екран, оскільки GUI ще не запустився.

    Будь обережним, ти працюєш як root.

    Введіть "вихід" у кореневому підказці для одного користувача, щоб залишити режим однокористувача та продовжити завантаження в режим багатокористувацького графічного інтерфейсу.

  3. Unixy операційки , які все ще з'являються , щоб тримати критичні однокористувальницький режим файлів з /usrне може, насправді, зробити це в ці дні. Одного разу я зробив поле FreeBSD 9 незавантаженим, перемістившись /usrдо тома ZFS. Я забув, що основні функції ZFS не приземлялися до FreeBSD 10, створюючи Catch 22 : ОС потрібні файли /usrдля монтажу /usr!

    Це було досить погано, але якби FreeBSD 9 все-таки утримував речі завантаження для одного користувача /usr, я міг би виправити це на місці. Оскільки навіть в однокористувацькому режимі він не запускається, /usrне будуючи незмінним, очевидно, що традиція якось порушилася. Мені довелося завантажуватися з рятувального компакт-диска, щоб знову створити цю систему.

  4. Тут ми також дістаємо /usr/share: він відокремлює файли, які можна ділити навіть між ящиками Unix з різними типами процесорів. Як правило, текстові файли: чоловічі сторінки, словник тощо.

  5. "X11R6" посилався на версію системи X Window, що лежить в основі графічних інтерфейсів Linux, на той час, коли ця конвенція переважала. Системи Linux, як правило, перестали відокремлювати програмне забезпечення GUI про час заміни X11R6 на X.Org .

  6. Оригінальні системи Unix зберігали свої основні сценарії оболонки /etc, щоб уникнути з'єднання їх із справжніми бінарними файлами в /bin.


3
Полюбила цю картину пральної машини!
асгс

@Warren, Які помітні ОС перед системою III?
Pacerier

@Pacerier: UNIX Версії 1 - 7, UNIX / 32V, 1BSD - 4BSD, не враховуючи точкових випусків 4BSD (4.1BSD приблизно суперечив AT&T Unix System III) та PWB Unix. Джерело . Чому ви запитуєте, і що це стосується цього питання?
Warren Young

@Warren, Що ж, вони могли якось вплинути на дефакто "систему імен імені каталогів"
Pacerier

@Pacerier: Я буду стояти проти своєї вимоги: перед системою V не було "стандартних", лише конвенції та місцеві практики.
Warren Young

9

Я б рекомендував звертатися до Вікіпедії для питань, пов’язаних зі структурою, загалом, це висвітлюватиме основи.

Однак, щоб відповісти на ваше запитання безпосередньо:

  • / usr - це некритичні системні бібліотеки та виконавчі файли
  • / usr / local, знову ж таки, вільно, для несистемних бібліотек та виконуваних файлів

Ось чому ви схильні знаходити подібну структуру між ними; / usr / {, local /} {bin, sbin, lib}. Що є новим для оболонки, цей біт із {} 's - це розширення оболонки. Спробуйте виконати

ls -ld /usr/{,local/}{bin,sbin,lib}

з вашої локальної оболонки, щоб побачити, як це працює.


9

/usr/local/bin показує коріння UNIX-esque останньої Mac OS (її BSD базується там).

  • "usr" означає системні ресурси UNIX. Це місце, в якому зберігаються системні програми та бібліотеки.
  • "локальний" представляє ресурси, які не постачалися зі стандартним розповсюдженням і, як правило, збираються та підтримуються на основі кожного сайту.
  • "bin" представляє двійкові компільовані виконувані файли.

Це перешкодило з початку впровадження UNIX до Linux та BSD, але конвенція залишилася. Тепер, це /usr/binбуло б для "основних" або основних програм та бібліотек, де /usr/local/binбуло б додаткові та некритичні програми та бібліотеки.


12
Я використовую Unix з недавнього часу після падіння Берлінської стіни, і до сьогодні я ніколи не чув про розширення "Unix System Resources" для "usr"; це по батькові. "usr" отримав свою назву, тому що саме там спочатку знаходились домашні каталоги користувачів. Тобто, якби ви мали вхід у старе вікно System III, ваш початковий робочий каталог був би /usr/nzwulfinза замовчуванням. Ще одна поширена схема. до того, як /homeсхема SVR4 перейняла, була /u. В одній із систем, які я використовував рано, було так багато користувачів, що для зберігання файлів користувачів їм потрібно було декілька фізичних дисків, тому вони мали такі речі /u/d5/tangent.
Warren Young

3
@Warren я теж не чув цього і деякий час тикав навколо Google; звучить так, що є досить багато бекгранімів
Michael Mrozek

4

/usr/local/bin - найпопулярніше місце за замовчуванням для виконуваних файлів, особливо з відкритим кодом.

Однак це, мабуть, поганий вибір, оскільки в системах Unix /usrбуло стандартизовано на початку дев'яностих, щоб містити ієрархію файлів, що належать до операційної системи, і таким чином вони можуть бути спільними для декількох систем, що використовують цю ОС.

Оскільки ці файли є статичними, /usrфайлову систему можна встановити лише для читання. /usr/localперемагає цей стандарт, як він є в дизайні локального, тому не є загальним, тому його потрібно читати-записувати, щоб дозволити локальну компіляцію і не є частиною операційної системи. Шкода, що /opt/localнатомість не вибрали натомість ...


1

Я рекомендую використовувати /usr/localдля комерційних програм, які ви можете встановити, наприклад, Mathematica. Розмістіть його у своєму розділі під час налаштування. Під час оновлення вашої ОС цей розділ не буде порушений, і вам не доведеться перевстановлювати його вміст. Тому використовуйте його для речей, які ви хочете зберігати між оновленнями ОС.

Окремо переконайтеся, що і ви даєте /homeвласний розділ з цієї причини.


0

Ця відповідь також може бути корисною.

/ usr / місцевий

Початкова ідея /usr/localполягала в тому, щоб на всіх машинах був окремий ('локальний') '/ usr' каталог /usr, який може бути просто встановлений лише для читання з іншого місця. Він копіює структуру /usr.

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

Він може використовуватися для програм і даних, які спільно використовуються між групою хостів, але не знайдені в /usr. Локально встановлене програмне забезпечення повинно розміщуватися в межах, /usr/localа не в тому випадку, /usrякщо воно не встановлюється для заміни або оновлення програмного забезпечення в /usr.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.