it-swarm-ru.tech

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

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

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

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

93
JFW

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

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

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

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

82
iamsid

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

Близко.

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

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

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

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

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

Некоторые разновидности Unix теперь игнорируют этот старый принцип проектирования, поскольку даже в небольших встроенных системах достаточно места для традиционных файлов корневых томов и всех /usr на одном томе. ³ Red Hat Enterprise Linux, символика Solaris и Cygwin /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, так далее.

Когда-то даже сценарии Shell, представляющие собой простые текстовые файлы, не содержались в каталогах 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.

    Введите "выход" в однопользовательском корневом режиме. Предложите выйти из однопользовательского режима и продолжить загрузку в многопользовательском режиме графического интерфейса.

  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 System , лежащей в основе графического интерфейса Linux в то время, когда это соглашение было распространено. Системы Linux обычно перестали выделять программное обеспечение с графическим интерфейсом примерно во время замены X11R6 на X.Org .

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

66
Warren Young

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

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

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

10
nzwulfin

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

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

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

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

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

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

9
Tok

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

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

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

4
jlliagre

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

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

1
ncmathsadist

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

/ USR/местные

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

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

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

1
Vishwanath gowda k