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

85

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

Я хотел бы знать, что /usr/local/bin, однако. /usr/Я полагаю, это пользователь компьютера. Я не уверен, почему /local/там. Очевидно, это означает локальный компьютер, но поскольку он находится на компьютере (или сервере), действительно ли это будет необходимо? Не было /usr/binбы хорошо?

А что есть /bin? Почему эта область обычно используется для установки скриптов на терминал?

JFW
источник

Ответы:

77

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

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

Этот источник помогает объяснить стандарт иерархии файловой системы на более глубоком уровне.

Вы можете найти эту статью об использовании и злоупотреблении/usr/local/bin интересным, а также.

iamsid
источник
"" "если он не устанавливается для замены или обновления программного обеспечения в / usr" "" означает?
Pacerier
63

/ usr /, я полагаю, является пользователем компьютера.

Близко.

Unix начинал как многопользовательская операционная система, поэтому это не «пользователь», это « пользователи », множественное число.

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

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

/usrу него все еще была веская причина удержать это имя: остались те файлы, которые не должны были быть доступны, пока система не загрузилась достаточно далеко, чтобы поддерживать нормальное интерактивное использование. То есть, то, что осталось позади, были ориентированные на пользователя части ОС. Это означало, что он /usrмог находиться на другом физическом томе, что было хорошо во времена 92 МБ жестких дисков размером со стиральные машины .

Ранние системы Unix старались не допускать доступа к файлам ядра ОС, /usrчтобы вы могли по-прежнему загружаться в однопользовательском режиме2, даже если /usrтом был по каким-то причинам отключен. Корневой том содержал достаточно инструментов, чтобы вернуть /usrтом в оперативный режим .

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

... / local / ... очевидно обозначает локальный компьютер ...

Да. Это относится к тому факту, что файлы в, /usr/localкак предполагается, являются специфическими для этой единственной системы. Файлы, которые в любом случае являются общими, должны находиться в другом месте.

Это также имеет корни в том, как системы Unix обычно использовались десятилетия назад, когда все это было стандартизировано. Опять же, жесткие диски того времени были громоздкими, действительно дорогими и хранили мало по сегодняшним стандартам. Чтобы сэкономить деньги и пространство на дисках, компьютерная лаборатория, полная коробок Unix, часто делится большей частью /usrчерез NFS или каким-либо другим сетевым протоколом обмена файлами, поэтому у каждого ящика не должно быть своей собственной избыточной копии. Файлы, относящиеся к одному коробка будет идти под /usr/local, который будет отдельный объем от /usr.

Именно из-за этого исторического наследия большинство сторонних программ для Unix по умолчанию /usr/localустанавливаются вручную. Большая часть такого программного обеспечения позволит вам установить пакет где-нибудь еще, но, не делая выбора, вы получите безопасное значение по умолчанию, которое не мешает другим распространенным местам установки с более конкретными целями.

Есть веские причины для установки программного обеспечения в другом месте. Команда компании Apple MacOS делает это , когда они строят, скажем, bashиз исходного кода GNU Bash . Они используют /в качестве префикса установки, переопределяя /usr/localзначение по умолчанию, так что Bash заканчивается в /bin.

Другой пример - способ, которым старые системы Linux /usr/X11R6отделяли свое программное обеспечение с графическим интерфейсом , чтобы отделить его от традиционной командной строки и cursesпрограммного обеспечения на основе. Это было сделано просто путем переопределения /usr/localпрефикса по умолчанию с помощью /usr/X11R6.⁵

А что такое / bin?

Это сокращение от «двоичный», что в данном контексте означает «файл, который не является простым текстом». Большинство таких файлов являются исполняемыми файлами в Unix-боксе, поэтому эти два термина стали синонимами в некоторых кругах. («Пожалуйста, создайте мне двоичный файл для RHEL 7, Фред».)

Текстовые файлы на коробке 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во время загрузки. Отпустите, как только экран станет черным, и вы увидите светло-серый текст. Это похоже на работу под терминалом, но он занимает весь экран, потому что графический интерфейс еще не запущен.

    Будь осторожен, ты бежишь как root.

    Введите «exit» в однопользовательском корневом запросе, чтобы выйти из однопользовательского режима и продолжить загрузку в многопользовательском режиме графического интерфейса.

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

    Это было достаточно плохо, но если бы FreeBSD 9 по-прежнему не использовала однопользовательскую загрузку /usr, я мог бы это исправить. Поскольку он не загружается даже в однопользовательском режиме, /usrбудучи несмонтируемым, очевидно, что традиция каким-то образом была нарушена. Мне пришлось загрузиться с аварийного компакт-диска, чтобы снова восстановить систему.

  4. Это также то, где мы получаем /usr/share: он разделяет файлы, которые могут быть общими даже для блоков Unix с разными типами процессоров. Как правило, текстовые файлы: справочные страницы, словарь и т. Д.

  5. «X11R6» относится к версии системы X Window, лежащей в основе графического интерфейса Linux, в то время, когда это соглашение было распространено. Системы Linux обычно перестали выделять программное обеспечение с графическим интерфейсом примерно во время замены X11R6 на X.Org .

  6. Оригинальные системы Unix сохранили свои основные сценарии оболочки /etc, чтобы избежать смешения с истинными двоичными файлами в /bin.

Уоррен Янг
источник
3
Очень понравилась эта картина стиральной машины!
просит
@Warren, Какие ОС известны до System III?
Pacerier
@Pacerier: UNIX Версии 1–7, UNIX / 32V, 1BSD - 4BSD, не включая точечные выпуски 4BSD (4.1BSD была примерно одновременно с AT & T Unix System III) и PWB Unix. Источник . Почему вы спрашиваете, и какое это имеет отношение к этому вопросу?
Уоррен Янг
@Warren, ну, они могли как-то повлиять на defacto "систему имен каталогов"
Pacerier
@Pacerier: Я буду придерживаться своего требования: до System V не было «стандарта», только соглашения и местные практики.
Уоррен Янг
9

Я бы рекомендовал обратиться к Википедии для вопросов, связанных со структурой в целом, она будет охватывать основы.

Чтобы ответить на ваш вопрос напрямую, однако:

  • / usr - это, в общем, некритические системные библиотеки и исполняемые файлы
  • / usr / local, опять же, свободно для несистемных библиотек и исполняемых файлов

Вот почему вы склонны находить похожую структуру между ними; / USR / {, локальный /} {бен, SBIN, Lib}. Будучи новичком в оболочке, этот бит с {} является расширением оболочки. Попробуйте выполнить

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

из вашей локальной оболочки, чтобы увидеть, как это работает.

Tok
источник
9

/usr/local/bin показывает UNIX-esque корни последней Mac OS (его BSD, основанный там).

  • «usr» обозначает системные ресурсы UNIX. Это место, где хранятся системные программы и библиотеки.
  • «local» представляет ресурсы, которые не были поставлены со стандартным дистрибутивом и, как правило, компилируются и поддерживаются для каждого сайта.
  • «bin» представляет двоичные скомпилированные исполняемые файлы.

Это трансформировалось с ранних реализаций UNIX для Linux и BSD, но соглашение осталось. Теперь, /usr/binбыло бы для "основных" или основных программ и библиотек, где /usr/local/binбыло бы для дополнительных и некритических программ и библиотек.

nzwulfin
источник
12
Я использую Unix вскоре после падения Берлинской стены, и до сегодняшнего дня я никогда не слышал о расширении «Unix System Resources» для «usr»; это бэкроним. «usr» получил свое название, потому что именно там изначально находились домашние каталоги пользователей. То есть, если у вас был логин на старом блоке System III, ваш начальный рабочий каталог будет /usr/nzwulfinпо умолчанию. Еще одна распространенная схема. до того как /homeсхема SVR4 вступила во владение, была /u. Одна система, которую я использовал на ранних этапах, имела так много пользователей, что им требовалось несколько физических дисков для хранения пользовательских файлов, поэтому у них были такие вещи, как /u/d5/tangent.
Уоррен Янг
3
@ Уоррен Я тоже этого не слышал и некоторое время ковырялся в Google; Похоже, что есть довольно много backronyms
Майкл Мрозек
4

/usr/local/bin является наиболее популярным местоположением по умолчанию для исполняемых файлов, особенно с открытым исходным кодом.

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

Поскольку эти файлы статичны, /usrфайловая система может быть смонтирована только для чтения. /usr/localнарушает этот стандарт, так как он локально проектируется и, следовательно, не используется совместно, поэтому должен быть доступен для чтения и записи, чтобы разрешить локальную компиляцию, и не является частью операционной системы. Жаль, что что-то вроде /opt/localне было выбрано вместо ...

jlliagre
источник
1

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

Отдельно, убедитесь, что вы также даете /homeсвой собственный раздел по этой причине.

ncmathsadist
источник
0

Этот ответ также может быть полезен.

/ USR / местные

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

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

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

Вишванат говда к
источник