Для выполнения всех операций над пакетами требуется специальная программа — установщик пакетов. В её задачи входит весь цикл работ с пакетом: от создания пакета (компиляции исходного пакета в двоичный), до его установки, удаления, обновления, а также хранение и вывод по запросу пользователя или системы информации об установленных и неустановленных пакетах, принадлежащих им файлах и т. п.
В системах Linux формат пакетов не унифицирован, распространено несолько различных форматов, и для каждого из них требуется собственный установщик пакетов. Наиболее известны уже описанный rpm
, dpkg
, используемый в Debian (см. подробнее лекцию Политика свободного лицензирования. История Linux: от ядра к дистрибутивам), а также пакеты в формате tgz
(он же tar.gz
— файловый архив tar
, сжатый упаковщиком gzip
, GNU Zip), то есть обычные файловые архивы, где вся необходимая в пакете метаинформация упакована в виде файлов наряду с файлами программного обеспечения. Установщики пакетов различаются не только форматом пакетов, с которыми они работают, но и кргуом возможностей, внутренним форматом хранения информации и т. д.
- установщик пакетов
- Программа, выполняющая основные операции с пакетами: установку, удаление, проверку, вывод информации о пакетах.
В рамках этой лекции мы ограничимся обсуждением только одного из установщиков пакетов — rpm
(Red Hat Package Manager). Он первоначально возник в дистрибутиве RedHat, но в настоящее время используется и во многих других дистрибутивах. Пожалуй, сейчас его можно назвать самым распространённым форматом: авторы программ для Linux обычно выкладывают свои программы в Интернет в виде файловых архивов tgz
и пакетов rpm
.
Обратной стороной популярности rpm является его нестандартность. Под расширением .rpm
довольно редко оказывается канонический формат, разрабатываемый RedHat. В формате rpm
смогли усмотреть много недостатков и недоделок, поэтому распостранено множество улучшенных и дополненных версий rpm
, и, соответственно, пакетов, ориентированных на какую-то из этих версий, но носящих всё то же расширение. На практике это означает, что разные версии rpm
не полностью совместимы между собой, поэтому даже если в вашей системе используется rpm
, это совершенно не означает, что вы сможете установить любой найденный в Интернете пакет в этом формате.
Случай rpm
— только самая яркая демонстрация более общей проблемы: в общем случае ни в одном дистрибутиве нельзя без потерь, помех или ручного вмешательства установить пакет, не разработанный специально для данного дистрибутива. В следующем разделе (Package.Менеджеры пакетов) изложены некоторые соображения, почему это нежелательно, и почему следует по возможности пользоваться именно «родными» пакетами, а если их нет — делать их самостоятельно.
Другая проблема установщиков пактов в том, что они годятся только для установки/удаления отдельных пакетов, но не предназначены для доставки пакетов в системы (пользователь сам должен найти и скачать нужный пакет, и указать местоположение файла пакета установщику в командной строке). Кроме того, установщик работает с каждым пакетом по отдельности: он может указать, что не удовлетворены некоторые зависимости, или имеют место конфликты, но не может в ходе процедуры установки ни установить все необходимые пакеты по цепочке зависимостей, ни удалить конфликтующие — пользователь должен делать это вручную. Установщики пакетов не предоставляют также никаких средств по автоматизации обновления системы.