В чем разница между «/usr/local» и «/usr/share»?

Вопрос или проблема

Боюсь, это еще один вопрос о FHS, но я не смог найти более детального объяснения, которое, как мне кажется, мне нужно. Да, я знаю о Uni FHS и так далее, но что все еще кажется недостаточно ясным, так это каталог /usr и его содержимое. Я считаю, это частично связано с тем, что я привык к Linux-установкам, занимающим только один раздел, за исключением /home.

Насколько я понимаю, его содержимое должно быть доступно на нескольких машинах, так что он (возможно) монтируется с какого-то ‘общего’ жесткого диска. Он также содержит бинарные файлы, не такие критически важные, как в /bin и /sbin. Исправьте меня, если я ошибаюсь.

Его описание как “только для чтения” немного сбивает меня с толку.

  1. Означает ли это, что пользователям не разрешено писать здесь, только суперпользователям?

    Теперь мой фокус на /usr/local и /usr/shared.

    /usr/local как

    Третичная иерархия для локальных данных, специфичных для данного хоста

    должно означать, что он не является общим.

  2. Правильно ли я полагаю, что это не часть того ‘общего’ жесткого диска, а просто точка монтирования для жесткого диска/раздела, предназначенного для одной машины? (то есть, он фактически не хранится с другими файлами /usr/bin вообще)

    Я также не совсем уверен, понимаю ли значение /usr/share. Это должно содержать

    Данные, не зависящие от архитектуры (общие)

    То, что /usr предполагается быть общим для нескольких машин и пользователей, не помогает осознать использование слова ‘общий’ здесь, которое предназначено для разных архитектур.

    Это заставляет меня задуматься:

  3. Где находятся данные, зависящие от архитектуры? Повсюду? Означает ли это, что машины с разными архитектурами не будут разделять /usr, только /usr/share? (тем самым делая его другим физически отдельным разделом)

    Здесь я ожидал бы главным образом двоичные файлы ненативного кода, скрипты, ресурсные и текстовые файлы помощи для приложений (что отчасти так), но я вижу bash-скрипты в /usr/bin и вдруг у меня возникает ощущение, что не все системно-некритичные архитектурно-независимые скрипты ограничены этим каталогом.

  4. Эти bash-скрипты являются только простыми обертками для исполняемых файлов или какова причина их нахождения там, если они архитектурно-независимы?

  5. Правильны ли мои рассуждения или я что-то упускаю?

Я слишком поздно, но для всех, кто наткнется на это:

  1. Да, это верно.
  2. Нет, каталог /usr/local является обычным каталогом на корневом разделе. Но не рекомендуется делиться им между машинами. Это не значит, что вы не можете этого сделать, но для этого он и предназначен.
  3. Данные, зависящие от архитектуры, могут храниться, например, в /usr/local/share, а не в /usr/share.
  4. /bin предназначен для бинарных файлов, /usr — для ресурсов и настроек.

.

Ответ или решение

Для глубокого понимания различий между каталогами /usr/local и /usr/share важно рассмотреть их функции в контексте FHS (Filesystem Hierarchy Standard) и традиционной структуры файловых систем Unix/Linux.

Теория

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

/usr/local

Каталог /usr/local, как следует из его названия, предназначен для "локальных" данных, специфичных для данного хоста. Это означает, что он используется для размещения программного обеспечения и данных, которые установлены на данном конкретном хосте, но не устанавливаются системным менеджером пакетов. Например, программное обеспечение, компилированное вручную или специфичное для данного хоста может быть размещено здесь. Согласно FHS, причина такого подхода заключается в том, чтобы избежать перезаписи локальных данных при обновлениях системы. Обычно /usr/local содержит поддиректории, такие как bin, lib, share и man, аналогичные тем, что находятся в /usr, но полностью управляющиеся пользователем.

/usr/share

Каталог /usr/share предназначен для хранения архитектурно-независимых данных, таких как файлы конфигурации, ресурсы локализации, документы и внутренние данные приложений. Главная идея заключается в том, чтобы данные, которые не зависят от архитектуры (например, они могут быть использованы на любой платформе, будь то x86, ARM и т. д.), хранились в одном месте, тем самым упрощая управление и экономя место.

Примеры

Пример 1:

Если разработчик создает программное обеспечение, которое они хотят установить на все машины в сети без использования системного менеджера пакетов, они могут разместить исполнимые файлы в /usr/local/bin, библиотеки в /usr/local/lib, а архитектурно-независимые данные в /usr/local/share. Это позволяет изменять или удалять программное обеспечение без воздействия на системные файлы, управляемые менеджером пакетов.

Пример 2:

Файлы локализации (переводы сообщений интерфейса) обычно хранятся в /usr/share/locale, потому что они не зависят от архитектуры системы. Независимо от архитектуры процессора, текстовые данные можно использовать в приложениях на разных платформах.

Применение

Применение в администрировании:

  1. Установка ПО: При установке программного обеспечения, которое не входит в стандартные пакеты, рекомендуется использовать /usr/local. Это предотвращает перезапись менеджером пакетов дистрибутива и упрощает перенос конфигураций на другие машины.

  2. Организация файловой системы: Для организации данных, которые могут быть использованы на любой платформе, /usr/share является идеальным местом. Это может быть полезным в распределенных системах, когда один файл может обслуживать разные архитектуры, сохраняя консистентные данные между ними.

  3. Безопасность и управление: Поскольку /usr и его подкаталоги может быть монтирован как раздел только для чтения, это повышает безопасность, защищая систему от непреднамеренных изменений пользователями благодаря разделению данных по архитектуре и уровням доступа.

Ответы на дополнительные вопросы

  • Каталог /usr и его подкаталоги могут быть монтированы как read-only для безопасности и консистентности, но это в основном административное решение. Суперпользователи (root) всё же имеют право вносить изменения в этих директориях при необходимости.

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

  • Архитектурозависимые данные, обычно, хранятся непосредственно в /bin, /lib, /usr/bin, и подобных каталогах, так как они содержат исполнимые файлы, специфичные для архитектуры.

  • Сценарии bash в /usr/bin могут быть как независимыми от архитектуры, так и зависящими от определённых условий или переменных среды. Это место для исполнимых файлов, которые могут использоваться как обёртки для бинарных исполнимых файлов или управлять набором системных команд.

Ваше понимание в целом корректно, и в процессе работы с Linux системами важно учитывать эти дифференциации для более эффективного администрирования и управления файлами системы.

Оцените материал
Добавить комментарий

Капча загружается...