Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

RPM Package Manager ( RPM ) (первоначально Red Hat Package Manager , теперь рекурсивная аббревиатура ) - это бесплатная система управления пакетами с открытым исходным кодом . [5] Название RPM относится к .rpm формату файла и самой программе диспетчера пакетов. RPM был предназначен в первую очередь для дистрибутивов Linux ; формат файла является базовым форматом пакета Linux Standard Base .

Хотя он был создан для использования в Red Hat Linux , сейчас RPM используется во многих дистрибутивах Linux, таких как Fedora , CentOS , OpenSUSE , OpenMandriva и Oracle Linux . Он также был перенесен на некоторые другие операционные системы , такие как Novell NetWare ( начиная с версии 6.5 SP3), IBM AIX ( начиная с версии 4), [6] IBM i , [7] и ArcaOS . [8]

Пакет RPM может содержать произвольный набор файлов. Большинство файлов RPM - это «двоичные RPM» (или BRPM), содержащие скомпилированную версию некоторого программного обеспечения. Существуют также «исходные пакеты RPM» (или SRPM), содержащие исходный код, используемый для создания двоичного пакета. У них есть соответствующий тег в заголовке файла, который отличает их от обычных (B) RPM, поэтому при установке они извлекаются в / usr / src. SRPM обычно имеют расширение файла «.src.rpm» (.spm в файловых системах ограничено 3 символами расширения, например, старая DOS FAT ).

История [ править ]

RPM первоначально была написана в 1997 году Эрик Troan и Марк Юинг, [1] на основе pms, rppи pmопыт.

pmбыл написан Риком Фэйтом и Дугом Хоффманом в мае 1995 года для Red Hat Software, на его дизайн и реализацию сильно повлияла pmsсистема управления пакетами Фейт и Кевина Мартина осенью 1993 года для Bogus Linux Distribution. pmсохраняет парадигму « Безупречные исходники + патчи» pms, добавляя при этом функции и устраняя произвольные ограничения, присутствующие в реализации. pmобеспечивает значительно расширенную поддержку базы данных для отслеживания и проверки установленных пакетов [4] [9] [10]

Особенности [ править ]

Для системного администратора, выполняющего установку и обслуживание программного обеспечения, использование управления пакетами вместо ручного создания имеет такие преимущества, как простота, согласованность и возможность автоматизации и неинтерактивности этих процессов. rpm использует Berkeley DB в качестве серверной базы данных, хотя с 4.15 в 2019 году он поддерживает создание пакетов rpm без Berkeley DB ( –disable-bdb).

Особенности RPM включают:

  • Пакеты RPM могут быть криптографически проверены с помощью GPG и MD5.
  • Архив Оригинальный источник (ы) (например .tar.gz, .tar.bz2), включены в SRPMS, что делает проверки проще
  • Дельта-обновление : PatchRPM и DeltaRPM, эквивалент RPM файла исправления , могут постепенно обновлять установленное RPM программное обеспечение.
  • Автоматическая оценка зависимостей во время сборки.

Местные операции [ править ]

Пакеты могут поступать из определенного дистрибутива (например, Red Hat Enterprise Linux ) или создаваться для него другими сторонами (например, RPM Fusion для Fedora). [11] Циклические зависимости между взаимозависимыми RPM (так называемый « ад зависимостей ») могут быть проблематичными; [12] в таких случаях одна команда установки должна указать все соответствующие пакеты.

Хранилища [ править ]

RPM-пакеты часто собираются централизованно в одном или нескольких репозиториях в Интернете. У сайта часто есть свои собственные репозитории RPM, которые могут действовать как локальные зеркала таких интернет-репозиториев или быть локально поддерживаемыми коллекциями полезных RPM.

Внешние интерфейсы [ править ]

Несколько внешних интерфейсов для RPM упрощают процесс получения и установки RPM из репозиториев и помогают в разрешении их зависимостей. Это включает:

  • yum используется в Fedora , CentOS 5 и выше, Red Hat Enterprise Linux 5 и выше, Scientific Linux , Yellow Dog Linux и Oracle Linux
  • DNF , представленный в Fedora 18 (по умолчанию с 22 ), Red Hat Enterprise Linux 8 и CentOS Linux 8.
  • up2date используется в Red Hat Enterprise Linux , CentOS 3 и 4 и Oracle Linux
  • Zypper используется в Mer (и, следовательно, в Sailfish OS), MeeGo , [13] openSUSE и SUSE Linux Enterprise.
  • urpmi используется в Mandriva Linux , ROSA Linux и Mageia
  • apt-rpm , порт Debian Advanced Packaging Tool (APT), используемый в Ark Linux, [14] PCLinuxOS и ALT Linux.
  • Smart Package Manager , используемый в Unity Linux, доступен для многих дистрибутивов, включая Fedora .
  • rpmquery, утилита командной строки, доступная (например) в Red Hat Enterprise Linux

База данных локальной установки RPM [ править ]

За кулисами диспетчера пакетов работает база данных RPM, хранящаяся в /var/lib/rpm. В качестве серверной части он использует Berkeley DB . Он состоит из единой базы данных ( Packages), содержащей всю метаинформацию об установленных RPM. Несколько баз данных создаются для целей индексации, репликации данных для ускорения запросов. База данных используется для отслеживания всех файлов, которые были изменены и созданы, когда пользователь (с помощью RPM) устанавливает пакет, что позволяет пользователю (через RPM) отменить изменения и удалить пакет позже. Если база данных повреждена (что возможно, если клиент RPM убит ), индексные базы данных можно воссоздать с помощью rpm --rebuilddbкоманды. [15]

Описание [ править ]

Хотя формат RPM одинаков для разных дистрибутивов Linux , подробные соглашения и рекомендации могут отличаться в зависимости от них.

Имя файла и метка пакета [ редактировать ]

RPM доставляется в виде одного файла, обычно с именем файла в формате:

<name>-<version>-<release>.src.rpm для пакетов с исходным кодом или
<name>-<version>-<release>.<architecture>.rpm для двоичных файлов.

Например, в пакете имя файла libgnomeuimm-2.0-2.0.0_3.i386.rpm, то <name>есть libgnomeuimm, то <version>есть 2.0, то <release>есть 2.0.0_3, и <architecture>есть i386. Связанный исходный пакет будет называтьсяlibgnomeuimm-2.0-2.0.0_3.src.rpm

RPM с noarch.rpmрасширением не зависят от конкретной архитектуры процессора. Например, эти RPM могут содержать графику и текст для использования другими программами. Они также могут содержать сценарии оболочки или программы, написанные на других интерпретируемых языках программирования, таких как Python .

Содержимое RPM также включает этикетку пакета , которая содержит следующую информацию:

  • название программного обеспечения
  • версии программного обеспечения (версия взяты из оригинального восходящего источника программного обеспечения)
  • выпуск пакета (количество раз, когда пакет перестраивался с использованием одной и той же версии программного обеспечения). Это поле также часто используется для указания конкретного дистрибутива, для которого предназначен пакет, путем добавления таких строк, как «mdv» (ранее «mdk») ( Mandriva Linux ), «mga» ( Mageia ), «fc4» ( Fedora Core 4). , «rhl9» (Red Hat Linux 9), «suse100» ( SUSE Linux 10.0) и т. д.
  • архитектура, для которой был собран пакет (i386, i686, x86_64, ppc и т. д.)

Поля метки пакета не обязательно должны совпадать с именем файла.

Упаковка библиотеки [ править ]

Библиотеки распределены в двух отдельных пакетах для каждой версии. Один содержит предварительно скомпилированный код для использования во время выполнения, а второй содержит связанные файлы разработки, такие как заголовки и т. Д. В поле имени этих пакетов добавлено «-devel». Системный администратор должен убедиться, что версии двоичного пакета и пакета разработки совпадают.

Двоичный формат [ править ]

Формат двоичный и состоит из четырех разделов: [5]

  • Лид, который идентифицирует файл как файл RPM и содержит некоторые устаревшие заголовки.
  • Подпись, которую можно использовать для обеспечения целостности и / или подлинности.
  • Заголовок, содержащий метаданные, включая имя пакета, версию, архитектуру, список файлов и т. Д.
  • Файловый архив ( полезная нагрузка ), обычно в формате cpio , сжатый с помощью gzip . rpm2cpioИнструмент позволяет извлечение файла CPIO без необходимости установки пакета RPM. [16]
    • Стандартная база Linux требует использования gzip, но пакеты Fedora 30 сжаты xz, а пакеты Fedora 31 могут быть сжаты zstd. [17] Последние версии RPM также могут использовать сжатие bzip2 , lzip , [18] или lzma .
    • Формат RPM 5.0 поддерживает использование xar для архивирования.

Файл SPEC [ править ]

«Рецепт» для создания пакета RPM - это файл спецификации. Файлы спецификации заканчиваются суффиксом «.spec» и содержат имя пакета, версию, номер редакции RPM, шаги по сборке, установке и очистке пакета, а также журнал изменений. При желании из одного файла спецификации RPM можно собрать несколько пакетов. Пакеты RPM создаются из файлов спецификации RPM с помощью инструмента rpmbuild.

Файлы спецификации обычно распространяются в файлах SRPM, которые содержат файл спецификации, упакованный вместе с исходным кодом.

SRPM [ править ]

Типичный RPM - это предварительно скомпилированное программное обеспечение, готовое к прямой установке. Соответствующий исходный код также может распространяться. Это делается в SRPM, который также включает файл «SPEC», описывающий программное обеспечение и способ его создания. SRPM также позволяет пользователю компилировать и, возможно, изменять сам код.

Программный пакет может содержать только скрипты, не зависящие от платформы. В таком случае разработчик может предоставить только SRPM, который по-прежнему является устанавливаемым RPM.

NOSRC [ править ]

Это специальная версия SRPM. Он содержит файл "SPEC" и необязательно исправления, но не включает исходные коды (обычно из-за лицензии). [19]

Вилки [ править ]

По состоянию на июнь 2010 года в разработке находятся две версии RPM: одна возглавляется Fedora Project и Red Hat, а другая - отдельной группой, возглавляемой предыдущим сопровождающим RPM, бывшим сотрудником Red Hat.

RPM.org [ править ]

В rpm.org первый крупный пересмотр кода сообщества в июле 2007 года; версия 4.8 была выпущена в январе 2010 года, версия 4.9 - в марте 2011 года, 4.10 - в мае 2012 года, 4.11 - в январе 2013 года, 4.12 - в сентябре 2014 года и 4.13 - в июле 2015 года.

Эта версия используется такими дистрибутивами, как Fedora , Red Hat Enterprise Linux и производные , openSUSE , SUSE Linux Enterprise , Unity Linux , Mageia , [20] OpenEmbedded , Tizen и OpenMandriva Lx (ранее Mandriva ).

RPM v5 [ править ]

Джефф Джонсон, сопровождающий RPM с 1999 года, продолжал разработку вместе с участниками из нескольких других дистрибутивов. Версия RPM 5 была выпущена в мае 2007 года.

Эта версия используется такими дистрибутивами, как Wind River Linux (до Wind River Linux 10), Rosa Linux и OpenMandriva Lx (бывшая Mandriva Linux, которая перешла на rpm5 в 2011 году [21] ), а также проектом OpenPKG, который предоставляет пакеты для других распространенные UNIX-платформы.

OpenMandriva Lx собирается вернуться к rpm.org [22] для выпуска 4.0. [ требуется обновление ]

OpenEmbedded , последний крупный пользователь RPM5, снова переключился на rpm.org из-за проблем в RPM5. [23] [24]

См. Также [ править ]

  • Autopackage - «дополнительная» система управления пакетами.
  • Delta ISO - образ ISO, содержащий файлы диспетчера пакетов RPM.
  • dpkg - система управления пакетами, используемая Debian и его производными
  • Список дистрибутивов Linux на основе RPM
  • pkg-config - запрашивает библиотеки для компиляции программного обеспечения из исходного кода

Ссылки [ править ]

  1. ^ a b c "График оборотов в минуту" . rpm.org . Проверено 25 июня 2020 .
  2. ^ «RPM - планы, цели и т . Д.» . Макс Спевак . Проверено 20 января 2011 .
  3. ^ "RPM.org FAQ" . Архивировано из оригинала на 2016-11-05 . Проверено 25 августа 2013 .
  4. ^ a b Бейли, Эдвард С. (2000). «Глава 1: Введение в управление пакетами». Максимальный RPM: использование диспетчера пакетов Red Hat до предела . Red Hat, Inc., стр. 22–25. ISBN 978-1888172782. Архивировано из оригинала на 2016-09-10 . Проверено 13 августа 2013 .
  5. ^ a b Бейли, Эдвард С. (2000). «Приложение A: Формат файла RPM». Максимальный RPM: использование диспетчера пакетов Red Hat до предела . Red Hat, Inc., стр. 325–336. ISBN 978-1888172782. Архивировано из оригинала на 2016-04-21 . Проверено 22 ноября 2010 .
  6. ^ «Настройка YUM и создание локальных репозиториев в IBM AIX» . 2018-10-24.
  7. ^ «RPM и Yum имеют большое значение для IBM i. Вот почему» . 2018-07-18.
  8. ^ "Менеджер пакетов" . Проверено 4 сентября 2020 .
  9. ^ «Руководство RPM-RPM - Цели проектирования» . Проверено 14 апреля 2014 .
  10. ^ "Фальшивое объявление" . Проверено 14 апреля 2014 .
  11. ^ "RPM Fusion" . rpmfusion.org . Проверено 22 ноября 2010 .
  12. ^ "Анализ дрейфа валидации RPM" (PDF) . Ассоциация USENIX . Проверено 15 марта 2011 .
  13. ^ "Zypper - MeeGo wiki" . Архивировано из оригинала на 2013-09-25 . Проверено 14 апреля 2014 .
  14. ^ «Часто задаваемые вопросы: о проектах» . Официальный сайт Ark Linux. Архивировано из оригинала на 2012-02-11 . Проверено 14 апреля 2014 .
  15. ^ "Безопасно отремонтировать базу данных RPM" . Проверено 11 ноября 2011 .
  16. ^ «Дополнительное программное обеспечение для упаковки» . Проект Fedora . Проверено 11 ноября 2011 .
  17. ^ "Переключить обороты на сжатие zstd" . Проект Fedora (Wiki) . Проверено 2 июня 2019 .
  18. ^ "[ПАТЧ] Добавить поддержку lzip" . Архивировано из оригинала на 2016-03-04 . Проверено 24 октября 2013 .
  19. ^ «Как упаковать проприетарное программное обеспечение» . Проверено 2 июля 2018 .
  20. ^ «Примечания к выпуску Mageia 3: Управление пакетами» . mageia.org . 2013-05-19 . Проверено 14 апреля 2014 .
  21. ^ Боднар, Ладислав & Smith, Джесси (2010-11-22). "DistroWatch Weekly" . DistroWatch . Проверено 22 ноября 2010 .
  22. ^ «Форум: Переход на RPMv4» . Проверено 3 марта 2018 .
  23. ^ "YP Core - Pyro 2.3" . Yocto Project . 2017-05-12. Архивировано 05 декабря 2017 года . Проверено 4 декабря 2017 .CS1 maint: bot: original URL status unknown (link)()
  24. ^ "[Openembedded-architecture] Изменения, которые вызовет переключение с smart на dnf" . Yocto Project . 2017-02-14 . Проверено 4 ноября 2018 .
  • Шредер, Джефф (30 января 2008 г.). «Расширенные строки запроса RPM» . www.digitalprognosis.com . Архивировано из оригинала на 2011-08-09 . Проверено 28 марта 2018 .

Внешние ссылки [ править ]

  • Домашняя страница проекта RPM.org
  • Справочник команд RPM и DPKG
  • История RPM Мэтта Фрая в журнале Red Hat, заархивированная 29 сентября 2007 г., находится на Wayback Machine.
  • Как создать пакет RPM
  • Видеоуроки по созданию и установке пакетов RPM
  • Примечания к RPM - простой способ создания RPM
  • Пакетирование программного обеспечения с помощью RPM, часть 1: Сборка и распространение пакетов
  • Изучите Linux, 101: управление пакетами RPM и YUM