Interested Article - RPM

RPM ( рекурсивный акроним RPM Package Manager RPM — менеджер пакетов ; ранее раскрывался как Red Hat Package Manager менеджер пакетов Red Hat ) — формат пакетов программного обеспечения , а также программа, созданная для управления этими пакетами, используемые в ряде Linux-дистрибутивов; является основным форматом пакетов в 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 .

База данных 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 не зависят от конкретной архитектуры компьютера. Обычно они содержат графику и тексты, используемые другими программами.

Преимущества и недостатки RPM

Преимущества RPM над другими средствами управления и установкой программного обеспечения

  • Лёгкость удаления и обновления программ;
  • Популярность: очень многие программы собираются именно в RPM, поэтому нет необходимости собирать программу из исходных кодов;
  • «Неинтерактивная установка»: легко автоматизировать процесс установки/обновления/удаления;
  • Проверка целостности пакетов с помощью контрольных сумм и GPG -подписей;
  • , аналог патча , позволяющий обновить установленное программное обеспечение с минимальной затратой трафика;
  • Возможность аккумуляции опыта сборщиков в spec-файле;
  • Относительная компактность spec-файлов за счёт использования макросов.

Основные недостатки

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

Создание пакета

Для создания пакета нужен spec-файл . Это обычный текстовый файл, который имеет суффикс .spec и содержит в себе название пакета, версию, номер выпуска, инструкции по сборке и установке пакета и список изменений. При наличии spec-файла пакет создаётся командой rpmbuild.

Примеры

  • 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 — название пакета, которому принадлежит файл fullpathtofile.

Поддерживаемые дистрибутивы Linux

Ниже приведён список некоторых наиболее известных дистрибутивов, основанных на RPM [ источник не указан 235 дней ] :

Удобные дополнения к RPM

Есть несколько программ, которые позволяют автоматически разрешить зависимости при установке пакетов. Вот некоторые наиболее известные:

Графические интерфейсы для RPM — PackageKit и Synaptic .

Примечания

  1. Max Spevack <mspevack redhat com>. Дата обращения: 20 января 2011. 6 октября 2012 года.
  2. Domonkos M. RPM 4.19.1 released!] — 2023.

Ссылки

  • от 11 сентября 2014 на Wayback Machine (англ.)
  • (пояснение выгоды для администраторов)
  • (англ.)
  • (англ.)
  • от 27 сентября 2009 на Wayback Machine (англ.)
  • от 13 августа 2006 на Wayback Machine (англ.) — каталог пакетов с возможностью поиска
  • от 11 января 2007 на Wayback Machine (англ.) — каталог пакетов с возможностью поиска
  • от 6 марта 2012 на Wayback Machine — скрипт для распаковки пакетов
  • от 27 марта 2007 на Wayback Machine
  • от 1 мая 2007 на Wayback Machine (рус.)
  • от 11 октября 2011 на Wayback Machine — Влад Горелецкий. Русский перевод книги Эрика Фостер-Джонсона Red Hat RPM Guide
Источник —

Same as RPM