Вопрос или проблема
Когда вы автоматически загружаете и устанавливаете пакеты с помощью команды apt или dpkg, они устанавливаются с очень детальными инструкциями (то есть идеально, в usr/share и usr/lib);
я хотел бы узнать:
1. как разработчики выбирают директории и не просто помещают их все в одну папку; я знаю, это связано с FHS, но если вы посмотрите на изображение ниже, то увидите, что они создали много символических ссылок на другие директории, например, у вас есть символические ссылки в usr/share/firefox-esr для usr/lib/firefox-esr и наоборот;
вы видите, что символическая ссылка указывает на другое место, или иногда указывает на usr/share (хотя мы могли бы просто поместить файл в usr/lib);
я знаю, это FHS, но нигде нет никакой инструкции, которая могла бы направить меня на этот уровень сложности;
если есть какие-либо инструкции, написанные где-то, или какая-либо книга, буду рад узнать ссылку.
Для дистрибутива Debian рекомендации о том, какие файлы принадлежат к каким путям директорий, описаны в документации Debian Policy. Дистрибутивы, основанные на Debian (например, Ubuntu), обычно придерживаются политики Debian.
Могут быть другие документы для других дистрибутивов, но я не знаю, какие они, и командная строка на вашем скриншоте указывает на то, что вы используете Debian.
.
Ответ или решение
Вопрос о том, как разработчики выбирают, в какие директории устанавливать пакеты, действительно может вызывать затруднения, особенно когда система установки пакетов кажущаяся немного запутанной из-за наличия множества символических ссылок и различных директорий. Для понимания этого процесса важно обратиться к нескольким ключевым источникам информации и концепциям.
Теория:
Во-первых, стоит начать с понимания "Стандартной Иерархии Файловых Систем" (File Hierarchy Standard, FHS), которая задает структуру директорий и их назначение в UNIX-подобных системах, включая Debian и его производные, такие как Ubuntu. FHS определяет, какие файлы должны находиться в каких местах. Этот стандарт помогает гарантировать, что пакеты будут работать согласованно на всех системах, которые следуют этому стандарту.
Например, в FHS указано, что:
/usr/lib
— это директория, где находятся библиотеки программ, используемые на уровне системы./usr/share
— это место для архитектурно-независимых данных, например, документов и других ресурсов, которые не требуют привязки к типу процессора или другой специфике системы.- Символические ссылки используются для упрощения доступа к файлам или для предоставления альтернативных путей к одним и тем же ресурсам, что позволяет рационально организовать пространство на диске и упростить обновления или замену файлов.
Таким образом, использование символических ссылок и различных директорий позволяет обеспечить как структурную целостность, так и гибкость системы.
Пример:
Ваша ссылочная ситуация, когда в директории /usr/share/firefox-esr
имеются символические ссылки на /usr/lib/firefox-esr
, типичная практика, иллюстрирующая динамическое связывание архитектурно-зависимых и независимых данных. Пример использования символических ссылок можно увидеть на практике при работе с библиотекой lib
и её ресурсами в /usr/share
. Библиотеки содержат код, который должен взаимодействовать с аппаратной составляющей, тогда как /usr/share
может содержать иконки, шаблоны, локализации и прочие данные.
Применение:
Если вы разрабатываете пакет для Debian или другого дистрибутива, внимательно ознакомьтесь с политиками Debian. Это руководство предоставляет исчерпывающую информацию о том, как должны располагаться файлы пакетов, чтобы они соответствовали структурным требованиям системы. Знание этих инструкций поможет в правильной упаковке вашего ПО и избежании проблем с совместимостью.
Кроме того, полезно изучить документацию конкретного дистрибутива, чтобы понимать их внутренние стандарты и тонкости настройки. Например, установленные пакеты могут требовать конфигурации через символические ссылки для поддержки различных версий одного ПО или для организации многопользовательского доступного окружения. Знание этого обеспечит качественное управление системным ПО, адаптацию под новые обновления и минимизацию конфликтов версий.
Для дальнейшего изучения, книги, как "Linux Filesystem Hierarchy" или специализированные учебные пособия по разработке для конкретного дистрибутива, предложат еще больше углубленной информации и практических примеров, которые могут быть полезны в вашей работе с пакетами программного обеспечения.