RPM

















RPM Package Manager

RPM Logo.svg
Тип
менеджер пакунків
Автор(и)
Marc Ewing[d][1] і Erik Troan[d][1]
Розробник
Red Hat
Стабільний випуск
4.12 (16 вересня 2014; 1674 дні тому)
Операційна система
Linux
Написано на
C
Ліцензія
GNU General Public License

rpm.org

RPM (англ. Red Hat Package Manager — менеджер пакунків Red Hat[2] або 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.




Зміст





  • 1 База даних RPM


  • 2 Назви пакунків


  • 3 Фізичний формат пакунків


  • 4 Переваги і недоліки RPM

    • 4.1 Основні недоліки



  • 5 Створення пакунку


  • 6 Приклади


  • 7 Дистрибутиви GNU/Linux


  • 8 Виноски


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



Фізичний формат пакунків |


Пакунок записується у двійковому форматі і складається з чотирьох розділів:[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 '%010SIZEt%NAME-%VERSION-%RELEASEn' — виведення переліку всіх

встановлених пакунків і їх розмірів



Дистрибутиви 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


Виноски |



  1. аб http://rpm5.org/roadmap.php



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


Посилання |



  • Офіційний сайт(англ.)


  • Керівництво(рос.)


  • Идеальный сисадмин: RPM (пояснение выгоды для администраторов)(рос.)


  • Сборка пакетов RPM(англ.)


  • man-страница RPM(англ.)


  • Збірка пакунків простим користувачем(англ.)


  • Package File Format — Linux Standards Base(англ.)


  • www.rpmfind.net(англ.) — велетенський репозиторій пакунків


  • rpm2cpio.sh — скрипт для розпаковки пакунків


  • Подключение сторонних RPM-репозиториев в Fedora/CentOS(рос.)


  • План перехода с Windows на Linux: Часть 9. Установка программного обеспечения(рос.) developerWorks Россия


Дивись також |


  • Open Build Service

Popular posts from this blog

AWS Lex not identifying response if by a variable The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) The Ask Question Wizard is Live! Data science time! April 2019 and salary with experienceEnforcing custom enumeration in AWS LEX for slot valuesHow to give response based on user response in Amazon Lex?Intercepting AWS Lambda Response to a AWS Lex QueryLex chat bot error: Reached second execution of fulfillment lambda on the same utteranceamazon lex showing invalid responseLambda response send back to Lex slot?Response card in Amazon lexAmazon Lex - Lambda response return HTML to botHow can I solve 424 (Failed Dependency) (python) obtained from Amazon lex?

Алба-Юлія

Захаров Федір Захарович