RPM
RPM (англ. Red Hat Package Manager — менеджер пакунків Red Hat[2] або RPM Package Manager — RPM — менеджер пакунків) — позначає дві речі: формат пакунків програмного забезпечення і програму, створену для управління цими пакунками. Програма дозволяє встановлювати, видаляти і оновлювати програмне забезпечення. Формат RPM заснований на форматі, розробленому LSB.
| |
Тип | менеджер пакунків |
---|---|
Автор(и) | Marc Ewingd[1] і Erik Troand[1] |
Розробник | Red Hat |
Стабільний випуск | 4.12 (16 вересня 2014 ) |
Репозиторій | github.com/rpm-software-management/rpm |
Операційна система | Linux |
Мова програмування | C |
Ліцензія | GNU General Public License |
Вебсайт | rpm.org |
Спочатку розроблений компанією Red Hat для Red Hat Linux, RPM став використовуватися в багатьох дистрибутивах GNU/Linux і був портований на інші операційні системи: Novell NetWare (з версії 6.5 SP3), IBM AIX (з версії 5) та інші.
Сьогодні «RPM Package Manager» використовується як рекурсивний акронім.
Проект RPM 4 (rpm.org) розвивається компанією Red Hat і використовується в таких дистрибутивах, як RHEL, Fedora, SUSE Linux, openSUSE, Mageia, ALT Linux і MeeGo. RPM 4 не слід плутати з проектом RPM 5 (rpm5.org), який ніяк не пов'язаний з RPM 4 і з 2007 року розвивається паралельно іншою командою розробників. З дистрибутивів, що перейшли на RPM 5, можна відмітити Unity Linux, OpenEmbedded, ArkLinux і Mandriva Linux.
База даних 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 не залежать від конкретної архітектури комп'ютера. Зазвичай вони містять графіку і тексти, що використовують інші програми.
Фізичний формат пакунків
Пакунок записується у двійковому форматі і складається з чотирьох розділів:[2]
- початкова ідентифікація пакунка як RPM файла, що містить також деякі застарілі заголовки.
- Підпис, який може використовуватися для впевненості в цілісності та/або автентичності.
- Заголовок містить метадані, включно з назвою пакунка, версією, архітектурою, списком файлів тощо.
- Файловий архів, який звичайно стиснений cpio з gzip. Останні версії RPM також можуть запаковані bzip2 або lzma. Формат RPM 5.0 підтримує архіватор xar.
Переваги і недоліки RPM
Переваги RPM над іншими засобами управління і установкою програмного забезпечення:
- Легкість видалення і оновлення програм
- Популярність: дуже багато програм збираються саме в RPM, тому немає необхідності збирати програму з вихідних кодів
- «Неінтерактивна установка»: легко автоматизувати процес установки/оновлення/видалення
- Перевірка цілісності пакунків за допомогою контрольних сум і GPG-підписів
- DeltaRPM, аналог patch, що дозволяє відновити встановлене програмне забезпечення з мінімальними витратами на трафік
- Можливість акумуляції досвіду складальників в spec-файлі
- Відносна компактність spec-файлів за рахунок використання макросів
Основні недоліки
- Незавершена і застаріла документація (або англомовна чернетка)
- Збірка пакунка з вихідних кодів зазвичай вимагає великих знань
- Макропакунки між дистрибутивами можуть істотно розрізнятися
- Іноді відбувається несумісність версій пакунків при пошуку залежностей (найчастіше це відбувається тоді, коли відбувається спроба встановити пакунок від іншого дистрибутиву, наприклад від Fedora Core до Mandriva)
- Неможливо розпакувати звичайним ПЗ (в порівнянні з deb (Debian) або tgz (Slackware)). Для цього існує скрипт rpm2cpio.sh (він розпаковує пакунок за допомогою od, expr, dd і gunzip, а не однією командою)
Створення пакунку
Для створення пакунку потрібний spec-файл. Це звичайний текстовой файл, має суфікс .spec і містить в собі назву пакунку, версію, номер реліза, інструкції по збірці і установці пакунку і список змін. За наявності spec-файла пакунок створюється командою rpmbuild
Дуже короткий курс молодого бійця можна знайти тут; з англомовних керівництв можна рекомендувати хоч і старе, але багато в чому (особливо по частині макросів) актуальне Maximum RPM і чернетка його оновленої версії — RPM Guide.
Приклади
- rpm -Uhv package.rpm — За наявності пакунка package відбудеться його оновлення, за відсутності — встановлення.
- rpm -qa --queryformat '%010{SIZE}\t%{NAME}-%{VERSION}-%{RELEASE}\n' — виведення переліку всіх встановлених пакунків і їх розмірів
Дистрибутиви GNU/Linux
Список деяких найвідоміших дистрибутивів GNU/Linux, заснованих на RPM:
- openSUSE, SUSE Linux Enterprise Desktop, SUSE Linux Enterprise Server
- ALT Linux
- ASP Linux
- CentOS
- Fedora
- Mandriva Linux
- Red Hat Enterprise Linux
- Fuduntu
- Mageia
- MeeGo
Виноски
- http://rpm5.org/roadmap.php
- Maximum RPM: Taking the Red Hat Package Manager to the Limit. Архів оригіналу за 5 липня 2008. Процитовано 17 липня 2008.
Посилання
- Офіційний сайт(англ.)
- Идеальный сисадмин: RPM (пояснение выгоды для администраторов)(рос.)
- Сборка пакетов RPM(англ.)
- man-страница RPM(англ.)
- Збірка пакунків простим користувачем(англ.)
- Package File Format — Linux Standards Base(англ.)
- www.rpmfind.net(англ.) — велетенський репозиторій пакунків
- rpm2cpio.sh — скрипт для розпакування пакунків
- Подключение сторонних RPM-репозиториев в Fedora/CentOS(рос.)
- План перехода с Windows на Linux: Часть 9. Установка программного обеспечения(рос.) developerWorks Россия