RPM

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
RPM Package Manager
RPM Logo.svg
Розробник(и) Red Hat
Стабільний випуск 4.12 (16 вересня 2014; 15 днів тому)
Операційна система Linux
Тип менеджер пакунків
Ліцензія GNU General Public License
Сайт rpm.org

RPM (англ. Red Hat Package Manager — менеджер пакунків Red Hat[1] або RPM Package Manager — RPM — менеджер пакунків) — позначає дві речі: формат пакунків програмного забезпечення і програму, створену для управління цими пакунками. Програма дозволяє встановлювати, видаляти і оновлювати програмне забезпечення. Формат RPM заснований на форматі, розробленому LSB.

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

Фізичний формат пакунків[ред.ред. код]

Пакунок записується у двійковому форматі і складається з чотирьох розділів:[1]

  • початкова ідентифікація пакунка як 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:

Виноски[ред.ред. код]

  1. а б Maximum RPM: Taking the Red Hat Package Manager to the Limit

Посилання[ред.ред. код]

Дивись також[ред.ред. код]