Каково обоснование для каталога `/ usr`?

Каково обоснование для «системных ресурсов unix», или каталога /usr, как описано здесь здесь , который дублирует многие имена каталогов в корневом каталоге /?

[ 115] Моя цель: я в очередной раз устанавливаю Oracle JDK и решил на этот раз просто поместить его в /home/user, и я просто немного читаю, чтобы увидеть, является ли это плохой идеей для однопользовательской машины.

107
задан 1 January 2016 в 03:27

1 ответ

Есть краткая версия и длинная версия вашего ответа ...

Короткая версия:

Как уже говорилось в вашей ссылке, /usr является местом для для всей системы , только для чтения файлы. Так что все ваши установленные программы идут туда. Он не дублирует имена /, за исключением /bin и /lib, но изначально имеет другое назначение: /bin, /lib только для двоичных файлов и библиотек , необходимых для загрузки , тогда как /usr/bin, /usr/lib для всех других исполняемых файлов и библиотек. (теперь будьте хорошим мальчиком и не спрашивайте о /sbin, это короткая версия в конце концов)

В настоящее время различие между «необходимыми для загрузки» уменьшилось, так как большинство современных дистрибутивов, включая Ubuntu, не могут нормально загружаться без нескольких файлов из /usr. И именно поэтому наблюдается сильное движение к слиянию /usr/bin и /bin, поэтому, вероятно, в ближайшем будущем (возможно, Ubuntu 12.10?) /bin будет символической ссылкой на /usr/bin.

Но, может быть, вы путаете /usr и /usr/local? Потому что да, существует (и должно быть) много дублированных имен каталогов. Подробнее об этом позже ...

Длинная версия:

Еще в 70-х годах, в Unix (да, Unix, задолго до Linux), на дискетах было мало места (нет HD, помните?) В данном случае двоичные файлы системы слишком выросли по количеству и размеру до такой степени, что они не поместились бы на одном диске, и разработчикам пришлось разделить их на несколько носителей и таким образом создать для них новые точки монтирования. /bin файловая система была переполнена, поэтому они установили новые двоичные файлы в ... /usr/bin. И /usr был в то время их ... пользовательским каталогом!

После того, как произошло разделение (почти смущающее и часто рассказываемое как шутка / знания), они начали создавать «искусственные» обоснования (и критерии), чтобы решить, что пойдет в /bin и что пойдет в /usr/bin. Неформальное правило гласило: «основные вещи» идут в /bin, «остальное» - в /usr/bin. То же самое с /lib. Это было незадолго до того, как /usr стал переполненным системными каталогами, смешанными с пользовательскими каталогами. Таким образом, был создан /home, чтобы хранить все пользовательские директории и содержать /usr в чистоте только для системных «вещей».

Это было задолго до появления FHS. Когда он был создан, он принял (и формализовал) текущую традицию и сохранил название /usr, хотя в то время он уже не имел ничего общего с «пользователем». Так что да, причудливые имена " U NIX s usce r epository" или " U NIX s ystem r esources "- все выдуманные имена, и уже слишком поздно переименовывать их. (но не слишком поздно, чтобы объединить /bin с ним)

«Хорошо, как насчет /usr/sbin, спросите вы. Черт, я надеялся, что ты забыл. Хорошо ... /usr/sbin предназначен для команд, которые могут быть (или имеют смысл только) исполнены пользователем root, например, mount и fdisk.

«Но разве это не то же самое, что /bin. Да, конечно, но ...

«Подождите, тогда почему тоже есть /sbin? Не имеет никакого смысла!» . Ну, это из-за ... эээ ... хм ...

Смотри, трехглавая обезьяна позади тебя!

Хорошо, надеюсь, ты достаточно отвлекся. Двигаемся дальше ...

(если вы думаете, что я обманываю, да, вы правы. Но таков «официальный» ответ »основные команды, которые могут быть выполнены только пользователем root и должны быть доступны еще до того, как вы смонтируете / ] "). Правда в том, что линия действительно размыта, и есть много устаревших имен, которые просто «застряли», и теперь от них довольно сложно избавиться.

Подробнее о деле для слияния /usr , из systemd документов:

Историческое обоснование для / bin, / sbin и / lib отделено от / usr больше не применяется сегодня. Они были разделены, чтобы выбрать инструменты на более быстром жестком диске (который был маленьким, потому что он был более дорогим) и содержать все инструменты, необходимые для монтирования более медленного раздела / usr. Сегодня, отдельный раздел / usr уже должен быть смонтирован initramfs во время ранней загрузки, тем самым оправдывая разделенный спор. Кроме того, многие инструменты в / bin и / sbin в статус-кво уже утратили способность работать без предварительно смонтированного / usr. Больше нет веских причин для того, чтобы операционная система распространилась по нескольким иерархиям, она утратила свое предназначение.

И удивительное прочтение Роба Лэндли о разделении /usr и его обосновании:

Понимание разбивки bin, sbin, usr / bin, usr / sbin

В настоящее время

В настоящее время, что касается установки каталогов, ваш лучший способ понять это думать так:

  • /usr - все общесистемные файлы только для чтения, установленные (или предоставленные) ОС

  • /usr/local - общесистемные файлы только для чтения, установленные локальным администратором (обычно ты). И именно поэтому большинство имен каталогов из /usr здесь дублируются.

  • /opt - злодеяние, предназначенное для общесистемного, только для чтения и автономного программного обеспечения. То есть, программное обеспечение, которое не разделяет свои файлы на bin, lib, share, include, как должно вести себя хорошее программное обеспечение.

  • ~/.local - аналог пользователя /usr/local для каждого пользователя, то есть: программное обеспечение, установленное (и для каждого пользователя)

  • ~/.local/opt - -пользовательский аналог /opt

Итак, где установить программное обеспечение?

Приведенный выше список - уже половина ответа на ваш вопрос Oracle JDK По крайней мере, это дает несколько подсказок. Контрольный список к «Где я должен установить программное обеспечение X?» составлен следующим образом:

  • Является ли это полностью автономным программным обеспечением с одним каталогом, таким как Eclipse IDE и другими скачали Java-приложения, и вы хотите, чтобы он был доступен для всех пользователей? Затем установите в /opt

  • То же, что и выше, но вас не волнуют другие пользователи, и я хочу установить только для вашего пользователя? Затем установите в ~/.local/opt

  • Его файлы разбиты на несколько каталогов, как bin и share, как традиционное программное обеспечение, скомпилированное и установленное с ./configure && make && sudo make install, и должны быть доступны для все пользователи? Затем установите в /usr/local

  • То же, что и выше, но только для вашего пользователя? Затем установите в ~/.local

  • Программное обеспечение, установленное ОС или через менеджеры пакетов (например, Центр программного обеспечения), и, что наиболее важно, , которое может быть перезаписано при любой локальной модификации менеджер обновлений обновляет его до новой версии ? Это относится к /usr

Примечания:

  • Это объясняет, почему префикс установки по умолчанию для скомпилированного программного обеспечения - /usr/local и почему вы должны изменить его на ./configure --prefix=$HOME/.local при установке программного обеспечения только для вашего собственного пользователя

  • Вы, возможно, заметили, что все выше каталогов являются только для чтения (кроме, конечно, при установке / удалении программного обеспечения). Записываемые файлы (например, файлы конфигурации) обычно идут в /etc (для общесистемного программного обеспечения) и ~/.config (для пользовательских настроек). Хотя многие устаревшие программы (и, к сожалению, некоторые современные тоже) используют ~/.<software-name>, загромождая домашнюю папку миллиардами папок и файлов.

  • ~/.local и ~/.config не являются частью спецификации FHS. FHS не имеет дело с домашней папкой пользователя. Это попытка XDG, еще одной стандартной организации, ориентированной на среды рабочего стола (например, Gnome, KDE и Unity), попытаться установить некоторые соглашения, касающиеся структуры дома пользователя. Не все программное обеспечение придерживается его (например, ~/.local/bin не по умолчанию пользователя $PATH, хотя по логике это должно быть) , и ни один пользователь не вынужден следовать ему, но оба получают много возможностей взаимодействия выгоды, если они делают.

Надеюсь, это поможет немного прояснить ситуацию. Не стесняйтесь спрашивать, чтобы я мог улучшить ответ!

( и я также надеюсь, что пуристы не убьют меня за такой крайне неформальный язык и объяснения. Это было сделано намеренно, и, конечно, в нем много неточностей, но я верю, что это хороший способ дать новичку краткое представление об обоснованиях установки каталогов)

0
ответ дан 1 January 2016 в 03:27

Другие вопросы по тегам:

Похожие вопросы: