RPM

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

База даних RPM ведеться в каталозі / var / lib / rpm. Вона складається з одиночної бази даних (Packages), в якій зберігається вся інформація про пакети, і безлічі маленьких баз (__ db.001, __ db.002 і т. д.), які служать для індексації і містять в собі відомості про те, які файли мінялися і створювалися при установці і видаленні пакетів.

Якщо база даних декілька зіпсується (що може статися, якщо процес встановлення або видалення був "убитий" або закінчилося місце на розділі), то її можна відновити, ввівши команду rpm - rebuilddb.

Якщо база була знищена - рекомендується дістати копію з заздалегідь зробленого бекапа або відновити за допомогою rpm-ivh - justdb за списком пакетів, заздалегідь отриманому командою rpm-qa | sort. Можливі полуеврістіческіе методи відновлення бази за списком файлів в пакетах репозиторію, з якого була встановлена ​​система, але краще до цього не доводити.


2. Назви пакетів

Кожен пакет 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 не залежать від конкретної архітектури комп'ютера. Зазвичай вони містять графіку і тексти, використовувані іншими програмами.


3. Переваги та недоліки RPM

3.1. Переваги RPM над іншими засобами управління і установкою програмного забезпечення

  • Легкість видалення і оновлення програм
  • Популярність: дуже багато програм збираються саме в RPM, тому немає необхідності збирати програму з вихідних кодів
  • "Неінтерактивність установка": легко автоматизувати процес установки / оновлення / видалення
  • Перевірка цілісності пакетів з допомогою контрольних сум і GPG -підписів
  • DeltaRPM, аналог патча, що дозволяє оновити встановлене програмне забезпечення з мінімальною витратою трафіку
  • Можливість акумуляції досвіду складальників в spec-файлі
  • Відносна компактність spec-файлів за рахунок використання макросів

3.2. Основні недоліки

  • Макропакет між дистрибутивами можуть істотно різнитися
  • Роздробленість і несумісність різних версій. Так, існують проекти з розробки RPM 4 (rpm.org), RPM5 (rpm5.org), а також велика кількість патчів на RPM в дистрибутивах. Зокрема, це призводить до:
    • Несумісності spec-файлів між дистрибутивами (spec-файл ALT Linux найчастіше неможливо зібрати на Red Hat або SuSE без значних виправлень)
    • Несумісності назв пакетних залежностей при спробі встановити пакет від іншого дистрибутива (наприклад, залежності в RPM збірки Connectiva створюються за іншими правилами, ніж у Mandriva).

4. Створення пакету

Для створення пакету потрібен spec-файл. Це звичайний текстовий файл, має суфікс. Spec і містить в собі назву пакета, версію, номер релізу, інструкції по збірці і установці пакету і список змін. За наявності spec-файл пакет створюється командою rpmbuild

Цикл статей по збірці RPM тут; з англомовних керівництв можна рекомендувати хоч і старе, але багато в чому (особливо по частині макросів) актуальне Maximum RPM і чернетка його оновленої версії - RPM Guide також є Red Hat RPM Guide - російський переклад


5. Приклади

  • 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

6. Підтримувані дистрибутиви Linux

Нижче наведено список деяких найбільш відомих дистрибутивів, заснованих на RPM:

(Це неповний список. Подробиці дивіться в списку дистрибутивів Linux)


7. Зручні доповнення до 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)

8. FrontEnd

Примітки

  1. RPM - plans, goals, etc.. Max Spevack .