Для установки, удаления и обновления программ в дистрибутивах RHEL, Fedora, Mandriva, AltLinux и некоторых других используется менеджер пакетов rpm. Менеджер пакетов rpm позволяет устанавливать, удалять, верифицировать пакеты соответствующего формата, но не имеет средств для автоматического разрешения зависимостей и поиска в репозиториях. Для автоматизации установки пакетов можно воспользоваться программой yum (Yellowdog Update Manager), которая автоматически разрешает зависимости между пакетами и подгружает необходимые файлы. При необходимости собрать пакет с программой из исходных текстов можно воспользоваться rpmbuild. Для этого необходимо подготовить пакет в формате .src.rpm, включающий исходные тексты программы и .spec файл, описывающий процесс сборки.
Пакеты именуются по следующей схеме: имя-версия-сборка
. Распространяются пакеты в виде файлов, в название которых добавляется .архитектура.rpm
. Например, squid-2.5.STABLE8–1.FC3.1.i386.rpm
расшифровывается так: программа squid
, версия 2.5.STABLE8
, сборка 1.FC3.1
, архитектура i386
(неоптимизированное приложение под i386 совместимые процессоры). Номер сборки может включать название дистрибутива (FC3 в данном случае, а может и не включать). Архитектура noarch
означает скрипты, независимые от архитектуры процессора. Файлы .src.rpm
содержат исходные тексты программ и устанавливаются особым образом.
Каждый пакет содержит файлы программ, библиотек, конфигурации, документации и пр., упакованные архиватором cpio
. Также пакет содержит дополнительные секции:
и т.д.
Кроме того, каждый пакет принадлежит к некоторой группе Интернет, Разработка Программ, Развлечения и т.п. Просмотреть секции rpm файла можно в mc.
В дальнейших описаниях <пакет> означает имя пакета без i386.rpm
(если установлена одна версия программы, то номер версии и сборки тоже можно опустить), а <файл> означает имя файла .rpm. В качестве файла можно указывать его URL, например, http://download.fedora.redhat.com/pub/fedora/linux/core/updates/3/i386/yum-2.2.0-0.fc3.noarch.rpm
Вспомогательные опции: -v
– подробный вывод сообщений, -h
– показ индикатора прогресса установки.
rpm -ivh <файл>...
– установить пакет(ы)
rpm -Uvh <файл>...
– обновить пакет(ы), если не установлены – установить
rpm -Fvh <файл>...
– обновить уже установленный(е) пакет(ы)
rpm -e <пакет>...
– удалить пакет(ы)
Вспомогательные опции: -a
– все установленные пакеты, -p
– информация о файле rpm (в примерах будут приведены не везде).
rpm -q <пакет>...
– проверка на наличие установленного пакета и его версии
rpm -qa
- список всех пакетов
rpm -qi <пакет>...
– DESCRIPTION пакета
rpm -qip <файл>...
– DESCRIPTION файла
rpm -qR <пакет>...
– REQUIERS пакета
rpm -ql <пакет>...
– список файлов пакета
rpm -qf <файл_в_файловой_системе>...
– определение принадлежности произвольного файла к одному из установленных пакетов
Файлы, размещенные в rpm пакете, сопровождаются вычисленной контрольной суммой и, как правило, подписаны цифровой подписью сборщика пакета. После установки пакета контрольные суммы и подписи сохраняются в базе установленных пакетов. Эти вспомогательные данные позволяют выполнить несколько проверок, например, можно проверить, что пакет создан доверенным издателем и что файлы пакета не были подменены после установки.
Первая проверка очень важна при скачивании пакетов из интернета, а вторая при подозрении на взлом компьютера.
Публичные ключи для проверки подписи автоматически устанавливаются при установке из дистрибутива, а также полуавтоматически добавляются при установке rpm пакетов для подключения репозиториев yum
. Файлы с ключами в CentOS устанавливаются в каталог /etc/pki/rpm-gpg/
. Можно добавить ключ вручную, указав путь к локальному файлу или его url. Файл с ключем должен иметь текстовый формат 'ASCII armored'
rpm --import PUBKEY-file
После инсталляции к ключам применимы те же команды, что и к установленным пакетам
rpm -qa gpg-pubkey*
– список всех ключей
rpm -qi gpg-pubkey-db42a60e
– информация (в том числе имя хозяина) о конкретном ключе
rpm -e gpg-pubkey-db42a60e
– удаление ключа
Проверка файла пакета на целостность
rpm --checksig <файл>
Проверка установленного пакета на целостность
rpm --verify <пакет>
После выполнения этой команды будет выдан список изменившихся файлов с указанием, что именно в них поменялось. Информация о типе изменений состоит из строки аббревиатур, включающих:
Программа rpm2cpio
извлекает файлы из RPM пакета в формате архива cpio
.
Для распаковки файлов вместе со структурой каталогов используется команда cpio
с опциями -i
– распаковать и -d
– создать каталоги:
rpm2cpio <файл.rpm> | cpio -i -d
Если необходимо сохранить установленный пакет в файл, то можно воспользоваться программой rpmrebuild
:
rpmrebuild <package>
Eсли пакет уже установлен и его надо переустановить или необходимо понизить версию пакета, то можно к командам инсталяции или обновления добавить опцию --force
.
Если установка или удаление пакета формально нарушает зависимости, но известно, что все будет хорошо, то используется опция --nodeps
.