4
3 СИСТЕМА КОНТРОЛЯ ЗАВИСИМОСТЕЙ МЕЖДУ ПАКЕТАМИ
В современных системах на базе Linux огромное число общих ресурсов, которыми
пользуются сразу несколько программ: разделяемых библиотек, содержащих стандартные функции,
исполняемых файлов, сценариев и стандартных утилит и т. д. Удаление или изменение версии
одного из составляющих систему компонентов может повлечь неработоспособность других,
связанных с ним компонентов, или даже вывести из строя всю систему. В контексте системного
администрирования проблемы такого рода называют нарушением целостности системы. Задача
администратора – обеспечить наличие в системе согласованных версий всех необходимых
программных компонентов (обеспечение целостности системы).
Для установки, удаления и обновления программ и поддержания целостности системы в
Linux в первую очередь стали использоваться менеджеры пакетов. С точки зрения менеджера
пакетов программное обеспечение представляет собой набор компонентов – программных пакетов.
Такие компоненты содержат в себе набор исполняемых программ и вспомогательных файлов,
необходимых для корректной работы программного обеспечения. Менеджеры пакетов облегчают
установку программ: они позволяют проверить наличие необходимых для работы устанавливаемой
программы компонент подходящей версии непосредственно в момент установки, а также
производят необходимые процедуры для регистрации программы во всех операционных средах
пользователя: сразу после установки программа может быть доступна пользователю из командной
строки и – если это предусмотрено – появляется в меню всех графических оболочек.
Часто компоненты, используемые различными программами, выделяют в отдельные пакеты
и помечают, что для работы ПО, предоставляемого пакетом A, необходимо установить пакет B. В
таком случае говорят, что пакет A зависит от пакета B или что между пакетами A и B существует
зависимость.
Отслеживание зависимостей между такими пакетами представляет собой серьёзную задачу
для любого дистрибутива – некоторые компоненты могут быть взаимозаменяемыми: может
обнаружиться несколько пакетов, предлагающих затребованный ресурс.
Задача контроля целостности и непротиворечивости установленного в системе ПО ещё
сложнее. Представим, что некие программы A и B требуют наличия в системе компоненты C
версии 1.0. Обновление версии пакета A, требующее обновления компоненты C до новой,
использующей новый интерфейс доступа, версии (например, до версии 2.0), влечёт за собой
обязательное обновление и программы B.
Однако менеджеры пакетов оказались неспособны предотвратить все возможные коллизии
при установке или удалении программ, а тем более эффективно устранить нарушения целостности
системы. Особенно сильно этот недостаток сказывается при обновлении систем из
централизованного репозитория пакетов, в котором последние могут непрерывно обновляться,