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