Понятие зависимостей

На предыдущей странице (и некоторых более ранних) мы употребляли понятие зависимости пакетов, как нечто общеизвестное. Настало время рассмотреть этот вопрос подробнее. В двух словах суть его в том, что пакет pkgname1 для сборки, установки и (или) функционирования требует наличия в системе пакета pkgname2, тот, в свою очередь, может потребовать пакета pkgname3, и так далее.

Выделяются разные типы зависимостей, важнейшими из которых являются два: зависимости “жёсткие“ и “мягкие”. Удовлетворение первых абсолютно необходимо для сборки данного пакета. Так, практически любая программа использует (статически или динамически) главную системную библиотеку glibc, любое приложение для системы X — одну из главных Иксовых библиотек. Подробнее об этом будет говориться на следующей странице.

“Мягкие” зависимости данного пакета не критичны для его функционирования — удовлетворение их лишь добавляет ему дополнительные функции (например, печати и сканирования для офисных и графических приложений) или возможности (скажем, доступ к файлам данных определённых форматов для той же графики или мультимедиа).

Впрочем, rpm-формат пакетов не предусматривает разделения зависимостей на “жёсткие“ и “мягкие”. Однако подчас приходится учитывать так называемые конфликтующие зависимости — то есть альтернативные по назначению пакеты, не способные ужиться в одной системе.

Понятие зависимостей пронизывает насквозь UNIX-совместимые системы, и особенно важно для свободных их представителей. В то же время пользователи Windows с ним сталкиваются очень редко, и потому постижение его вызывает у них определённые трудности.

Традиционная модель разработки UNIX-программ (то, что задумчиво именуют UNIX Way) характеризуется ярко выраженным стремлением не множить сущности без крайней необходимости. Или, говоря попросту, не изобретать велосипеды. То есть: если требуемая разработчику данной программы функция уже реализована и включена в какую-либо распространенную библиотеку, то наш разработчик скорее всего этой библиотекой и воспользуется, а не будет переписывать ее с нуля. Благо, поскольку все распространённые и общеупотребимые библиотеки открыты, он имеет полную возможность это сделать.

Возможно, разработчик Windows-программы с удовольствием последовал бы примеру своих FOSS-коллег. Однако исходники Windows-библиотек в большинстве своем закрыты и защищаются всякого рода проприетарными лицензиями, а в некоторых странах и патентами, препятствующими их свободному использованию. И потому Windows-разработчику волей-неволей приходится реализовывать требуемые ему функции самостоятельно. В результате чего программа, хотя и приобретает определённую самодостаточность, но зато разбухает в размерах: вспомним, сколько файлов вида *.dll устанавливает элементарный графический вьювер, идущий в комплекте со сканером или цифровой камерой.


Главная
Содержание

. .