Администратору системы приходится выполнять следующие операции при работе с пакетами:
установка программ;
обновление программ (например, в связи с выходом её новой версии);
удаление программ;
получение информации о пакетах — как установленных, так и не установленных.
При этом необходимо автоматизировать работу с зависимостями и конфликтами, так как число пакетов и связей между ними в современных системах очень велико (тысячи и более).
Как уже было сказано выше, пакеты в системе выстраиваются в сеть зависимостей и блокировок. Например, веб-сервер apache может зависеть от множества пакетов, т.е. администратору придётся установить все из них перед установкой самого пакета apache.На рисунке Рисунок 3.20, «Пример зависимостей пакетов в системе» показан пример реальных зависимостей пакетов в одном из дистрибутивов GNU/Linux. Аналогичная ситуация возникает и при удалении пакета: удаление одной из зависимостей вообще говоря некорректно и может привести к отказу работы программ из основного пакета.
Рисунок 3.20. Пример зависимостей пакетов в системе
Зависимость между пакетами системы может основываться на:
функциональной зависимости, например, программы от библиотеки (например, библиотеки «libreadline», предоставляющей функцию гибкого ввода текста в командной строке);
зависимости от набора данных или конфигураций (так, пакет «terminfo» предоставляет набор конфигураций терминалов);
зависимости при установке — при отсутствии данного пакета в системе не удастся развернуть и проинициализировать зависящий от него пакет;
виртуальные зависимости — используются для объединения пакетов в группы, удобные для установки и обновления (например, пакет «glibc» зависит от множества пакетов вида «glibc-*», включающих отдельные компоненты базовой системной библиотеки).
Часто в рамках одной системы доступно для установки несколько версий программы (а, следовательно, и пакета). Как правило, разные версии пакета не могут одновременно присутствовать в системе. Такая ситуация называется конфликтом между пакетами в системе. Другой причиной конфликта может быть аналогичная функциональность пакетов, например в системе может быть установлен только один демон планирования заданий, хотя существует несколько его реализаций, представленных различными пакетами.