В чем разница между каталогами /, /usr, /usr/local в Filesystem Hierarchy Standard?
В чем разница между каталогами /, /usr и /usr/local?
Почему одни пакеты должны устанавливаться в /bin, а другие в /usr/bin, третьи же в /usr/local/bin? ну и соответственно /etc -> /usr/local/etc и т.п.
Ответы (1 шт):
начнём с последнего, /usr/local.
когда вы «руками» собираете какие-нибудь программы, общепринятый префикс для их установки — /usr/local. блобы устанавливаются в /usrl/local/bin, конфигурационные файлы в /usr/local/etc и т.д. и т.п.
это помогает избежать конфликтов с теми файлами, которые входят в базовую систему и/или устанавливаются пакетным менеджером — в обоих случаях каталог /usr/local не используется.
теперь про /usr и /
каталог /usr может монтироваться по сети (когда-то в больших локальных сетях это было обычной практикой — для удобства администрирования и для экономии места). поэтому в случае сбоев и/или при работе в однопользовательском режиме (который как раз и актуален именно при починке после сбоев) содержимое каталога может быть недоступно. поэтому размещаются туда только файлы, которые не могут потребоваться для починки после сбоев.
соответственно, то, что может понадобиться для починки (и/или при работе в однопользовательском режиме), должно располагаться за пределами каталога /usr.
тут есть некоторая логическая неувязка: если /usr может использоваться совместно несколькими компьютерами локальной сети (логично, что при этом содержимое монтируется в режиме «только для чтения»), то как же насчёт /usr/local, который служит для локально собираемых программ?
вероятно, в случае совместного сетевого использования /usr, в /usr/local должна монтироваться отдельная локальная файловая система (или содержимое какого-нибудь локального каталога, с опцией --bind — см. $ man 8 mount)