RPM (англ. Red Hat Package Manager — менеджер пакунків Red Hat або RPM Package Manager — RPM — менеджер пакунків) — позначає дві речі: формат пакунків програмного забезпечення і програму, створену для управління цими пакунками. Програма дозволяє встановлювати, видаляти і оновлювати програмне забезпечення. Формат RPM заснований на форматі, розробленому LSB.
Тип | менеджер пакунків |
---|---|
Автори | Marc Ewingd і Erik W. Troand |
Розробник | Red Hat |
Стабільний випуск | 4.12 (16 вересня 2014 ) |
Операційна система | Linux |
Мова програмування | C |
Ліцензія | GNU General Public License |
Репозиторій | github.com/rpm-software-management/rpm |
Вебсайт | 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 [ 15 червня 2018 у Wayback Machine.]) розвивається компанією Red Hat і використовується в таких дистрибутивах, як RHEL, Fedora, SUSE Linux, openSUSE, Mageia, ALT Linux і MeeGo. RPM 4 не слід плутати з проектом RPM 5 (), який ніяк не пов'язаний з 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 і т. д.)
Зібраний пакунок зазвичай має такий формат назви:
Наприклад:
Іноді в пакунок входять початкові коди. Такі пакунки не містять інформації про архітектуру, вона замінюється на src. Наприклад:
Бібліотеки найчастіше розповсюджуються в двох окремих пакунках. Перший містить зібраний код, другий (зазвичай до нього додають -devel) містить заголовні файли і інші файли, необхідні розробникам. Необхідно стежити за тим, щоб версії цих двох пакунків збігалися, інакше бібліотеки можуть працювати некоректно. Пакунки з розширенням noarch.rpm не залежать від конкретної архітектури комп'ютера. Зазвичай вони містять графіку і тексти, що використовують інші програми.
Фізичний формат пакунків Редагувати
Пакунок записується у двійковому форматі і складається з чотирьох розділів:
- початкова ідентифікація пакунка як 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 [ 6 березня 2012 у Wayback Machine.] (він розпаковує пакунок за допомогою od, expr, dd і gunzip, а не однією командою)
Створення пакунку Редагувати
Для створення пакунку потрібний spec-файл. Це звичайний текстовой файл, має суфікс .spec і містить в собі назву пакунку, версію, номер реліза, інструкції по збірці і установці пакунку і список змін. За наявності spec-файла пакунок створюється командою rpmbuild
Дуже короткий курс молодого бійця можна знайти ; з англомовних керівництв можна рекомендувати хоч і старе, але багато в чому (особливо по частині макросів) актуальне Maximum RPM [ 16 травня 2008 у Wayback Machine.] і чернетка його оновленої версії — .
Приклади Редагувати
- 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
- ↑ . Архів оригіналу за 5 липня 2008. Процитовано 17 липня 2008.
Посилання Редагувати
- Офіційний сайт [ 11 вересня 2014 у Wayback Machine.](англ.)
- (пояснение выгоды для администраторов)(рос.)
- (англ.)
- (англ.)
- (англ.)
- Package File Format — Linux Standards Base(англ.)
- www.rpmfind.net [ 13 серпня 2006 у Wayback Machine.](англ.) — велетенський репозиторій пакунків
- rpm2cpio.sh [ 6 березня 2012 у Wayback Machine.] — скрипт для розпакування пакунків
- Подключение сторонних RPM-репозиториев в Fedora/CentOS [ 27 березня 2007 у Wayback Machine.](рос.)
- План перехода с Windows на Linux: Часть 9. Установка программного обеспечения [ 1 травня 2007 у Wayback Machine.](рос.) developerWorks Россия