RPM | это... Что такое RPM? (original) (raw)
У этого термина существуют и другие значения, см. rpm.
RPM Package Manager (RPM)
Тип | Система управления пакетами |
Автор | Red Hat |
Разработчик | сообщество[1] |
Написана на | Си |
Операционная система | GNU/Linux, Unix-like |
Последняя версия | 5.3.6 (2 марта 2011) |
Тестовая версия | 5.4.0 |
Лицензия | GNU General Public License |
Сайт | http://rpm.org/ http://rpm5.org/ |
RPM (рекурсивный акроним RPM Package Manager — RPM — менеджер пакетов; ранее раскрывался как Red Hat Package Manager — менеджер пакетов Red Hat) обозначает две сущности: формат пакетов программного обеспечения и программа, созданная для управления этими пакетами. Программа позволяет устанавливать, удалять и обновлять программное обеспечение. RPM является основным форматом пакетов в LSB.
Изначально разработанный компанией Red Hat для Red Hat Linux, RPM стал использоваться во многих дистрибутивах Linux и был портирован на другие операционные системы: Novell NetWare (с версии 6.5 SP3), IBM AIX (с версии 5) и прочие.
Для хранения файлов в формате RPM используется архивный контейнер cpio, с использованием сжатия утилитой gzip. В более поздних версиях может быть использован архиватор star и сжатие с помощью bzip2, LZMA или XZ. Начиная с версии RPM 5.0 возможно использование архиватора XAR.
Содержание
- 1 База данных RPM
- 2 Названия пакетов
- 3 Преимущества и недостатки RPM
- 4 Создание пакета
- 5 Примеры
- 6 Поддерживаемые дистрибутивы Linux
- 7 Удобные дополнения к RPM
- 8 FrontEnd
- 9 Примечания
- 10 Ссылки
База данных RPM
База данных RPM ведётся в каталоге /var/lib/rpm. Она состоит из одиночной базы данных (Packages), в которой хранится вся информация о пакетах, и множества маленьких баз (__db.001, __db.002 и т. д.), которые служат для индексации и содержат в себе сведения о том, какие файлы менялись и создавались при установке и удалении пакетов.
Если база данных несколько испортится (что может произойти, если процесс установки или удаления был «убит» или закончилось место на разделе), то её можно восстановить, введя команду rpm --rebuilddb.
Если база была уничтожена — рекомендуется достать копию из заранее сделанного бэкапа или восстановить при помощи rpm -ivh --justdb по списку пакетов, заранее полученному командой rpm -qa | sort. Возможны полуэвристические методы восстановления базы по списку файлов в пакетах репозитория, из которого была установлена система, но лучше до этого не доводить.
Названия пакетов
Каждый пакет RPM имеет название, которое состоит из нескольких частей:
- Название программы
- Версия программы
- Номер релиза (количество раз пересборки программы одной и той же версии). Также часто используется для обозначения дистрибутива, под который собран этот пакет, например mdv (Mandriva Linux) или fc4 (Fedora Core 4).
- Архитектура, под которую собран пакет (i386, ppc и т. д.)
Собранный пакет обычно имеет такой формат названия:
<название>-<версия>-<релиз>.<архитектура>.rpm
Например:
nano-0.98-2.i386.rpm
Иногда в пакет входят исходные коды. Такие пакеты не содержат информации об архитектуре, она заменяется на src. Например:
libgnomeuimm2.0-2.0.0-3.src.rpm
Библиотеки чаще всего распространяются в двух отдельных пакетах. Первый содержит собранный код, второй (обычно к нему добавляют -devel) содержит заголовочные файлы и другие файлы, необходимые разработчикам. Необходимо следить за тем, чтобы версии этих двух пакетов совпадали, иначе библиотеки могут работать некорректно. Пакеты с расширением noarch.rpm не зависят от конкретной архитектуры компьютера. Обычно они содержат графику и тексты, используемые другими программами.
Преимущества и недостатки RPM
Преимущества RPM над другими средствами управления и установкой программного обеспечения
- Лёгкость удаления и обновления программ
- Популярность: очень многие программы собираются именно в RPM, поэтому нет необходимости собирать программу из исходных кодов
- «Неинтерактивная установка»: легко автоматизировать процесс установки/обновления/удаления
- Проверка целостности пакетов с помощью контрольных сумм и GPG-подписей
- DeltaRPM, аналог патча, позволяющий обновить установленное программное обеспечение с минимальной затратой трафика
- Возможность аккумуляции опыта сборщиков в spec-файле
- Относительная компактность spec-файлов за счёт использования макросов
Основные недостатки
- Макропакеты между дистрибутивами могут существенно различаться
- Раздробленность и несовместимость различных версий. Так, существуют проекты по разработке RPM 4 (rpm.org), RPM5 (rpm5.org), а также большое количество патчей на RPM в дистрибутивах. В частности, это приводит к:
- Несовместимости spec-файлов между дистрибутивами (spec-файл ALT Linux чаще всего невозможно собрать на Red Hat или SuSE без значительных исправлений)
- Несовместимости названий пакетных зависимостей при попытке установить пакет от другого дистрибутива (например, зависимости в RPM сборки Connectiva создаются по другим правилам, нежели в Mandriva).
Создание пакета
Для создания пакета нужен spec-файл. Это обычный текстовой файл, имеет суффикс .spec и содержит в себе название пакета, версию, номер релиза, инструкции по сборке и установке пакета и список изменений. При наличии spec-файла пакет создаётся командой rpmbuild
Цикл статей по сборке RPM здесь; из англоязычных руководств можно рекомендовать хоть и старое, но во многом (особенно по части макросов) актуальное Maximum RPM и черновик его обновлённой версии — RPM Guide также есть Red Hat RPM Guide — русский перевод
Примеры
- rpm -Uhv package.rpm — При наличии пакета package произойдёт его обновление, при отсутствии — установка.
- rpm -qa --queryformat '%010{SIZE}\t%{NAME}-%{VERSION}-%{RELEASE}\n' — вывод списка всех установленных пакетов и их размеров
- rpm -q --queryformat %{DISTRIBUTION} package.rpm — название дистрибутива, в котором установлен пакет. (опция -q для установленного в систему пакета, опция -qp для неустановленного)
- rpm -qa | grep xx — список пакетов, где встречается сочетание «xx»
- rpm -q --whatprovides fullpathtofile — название пакета которому принадлежит файл fullpathfofile
Поддерживаемые дистрибутивы Linux
Ниже приведён список некоторых наиболее известных дистрибутивов, основанных на RPM:
(Это неполный список. Подробности смотрите в списке дистрибутивов Linux)
Удобные дополнения к RPM
Есть несколько программ, которые позволяют автоматически разрешить зависимости при установке пакетов. Вот некоторые наиболее известные:
- apt-rpm, порт APT, изначально выполненный Conectiva, затем существенно доработанный ALT Linux Team и продолжающий развиваться
- apt4rpm, более поздний порт APT чем apt-rpm.
- smart, доступен для многих дистрибутивов
- urpmi, используется в Mandriva Linux
- zypper, используется в SuSE
- yum, разработан в Yellow Dog Linux, также используется в Fedora, ASP Linux, Red Hat Enterprise Linux (с версии 5.0, и основанных на нём дистрибутивах CentOS, Scientific Linux)
FrontEnd
- PackageKit
- Synaptic
Примечания
- ↑ RPM -- plans, goals, etc.. Max Spevack . Проверено 20 января 2011.
Ссылки
- Официальный сайт (англ.)
- Руководство на русском
- Идеальный сисадмин: RPM (пояснение выгоды для администраторов)
- man-страница RPM (англ.)
- Сборка пакетов простым пользователем (англ.)
- Package File Format — Linux Standards Base (англ.)
- www.rpmfind.net (англ.) — каталог пакетов с возможностью поиска
- rpm.pbone.net (англ.) — каталог пакетов с возможностью поиска
- rpm2cpio.sh — скрипт для распаковки пакетов
- Подключение сторонних RPM-репозиториев в Fedora/CentOS
- План перехода с Windows на Linux: Часть 9. Установка программного обеспечения (рус.) developerWorks Россия
- www.lexpr.ru — Влад Горелецкий. Русский перевод книги Эрика Фостер-Джонсона Red Hat RPM Guide
Red Hat | |
---|---|
Главные продукты | RHEL · Directory Server · Certification Program · Global File System · Cluster Suite · JBoss · Fedora · VMM · Anaconda · YUM · up2date · RPM · Satellite |
Службы | RHN · Mugshot |
Проекты | Проект Fedora · Dogtail · Spacewalk |
Устаревшие | Red Hat Linux · Red Hat Database · Fedora Legacy |
Важные люди | Джим Уайтхерст · Мэттью Шулик · Боб Янг · Марк Эвинг · Майкл Тименн |
Слияния и поглощения | Слияния и поглощения · Akopia · C2Net · Cygnus Solutions · JBoss · MetaMatrix · Qumranet |
Разное | Red Hat India · Дистрибутивы семейства RedHat · kickstart |
Форматы архивов (сравнение по типу) | |
---|---|
Только архивирование | ar • cpio • shar • tar • LBR |
Только сжатие | bzip2 • compress • gzip • LZMA • LZW • lzop • rzip • SQ • XZ |
Архивирование и сжатие | 7z • ACE • ARC • ALZip • ARJ • Cabinet • cpt • DAR • dd • DGCA • .dmg • GCA • kgb • LHA • LZX • PAQ • RAR • qda • sit • SQX • Xar • zoo • ZIP |
Упаковка и распространение ПО | deb • pkg • gem • RPM • MSI • JAR (WAR • RAR (Java) • EAR) |
Свободное программное обеспечение для управления ОС | |
---|---|
Установщик ОС | YaST • Anaconda • Debian-Installer • BSD Installer • Sysinstall • Finstall • |
Менеджер входа | KDM • GDM • LXDM • LightDM • WINGs • Entrance • SLiM • Enter • |
Управление ПО | YaST • Yumex • Synaptic • Aptitude • Ubuntu Software Center • Deepin Software Center • KPackage • RPMdrake • AppCoffe • |
Управление ОС | YaST • SystemConfig • Calculate console • DrackConf • Control Panel • Alterator • |