Менеджер пакетов RPM
![]() | |
Оригинальный автор(ы) | Эрик Троан, Марк Юинг , [1] Красная шляпа |
---|---|
Разработчик(и) | Сообщество и Red Hat [2] [3] |
Первоначальный выпуск | 1997 год [1] |
Стабильная версия | 4.19.1 / 12 декабря 2023 г |
Репозиторий | |
Написано в | С , Перл [4] |
Операционная система | Linux , Unix-подобный |
Доступно в | 40 языков [5] |
Тип | Система управления пакетами |
Лицензия | лицензия GPL |
Веб-сайт | об/мин |
Менеджер пакетов RPM ( RPM ) (первоначально Red Hat Package Manager , теперь рекурсивный акроним ) — с открытым исходным кодом бесплатная система управления пакетами . [6] Название RPM относится к .rpm
формат файла и сама программа менеджера пакетов. RPM предназначался в первую очередь для дистрибутивов Linux ; формат файла — это базовый формат пакета Linux Standard Base .
Хотя он был создан для использования в Red Hat Linux , сейчас RPM используется во многих дистрибутивах Linux, таких как PCLinuxOS , Fedora Linux , AlmaLinux , CentOS , openSUSE , OpenMandriva и Oracle Linux . Он также был портирован на некоторые другие операционные системы , такие как Novell NetWare (начиная с версии 6.5 SP3), IBM AIX (начиная с версии 4), [7] IBM я , [8] и АркаОС . [9]
Пакет RPM может содержать произвольный набор файлов. Большинство файлов RPM представляют собой «двоичные RPM» (или BRPM), содержащие скомпилированную версию некоторого программного обеспечения. Существуют также «исходные RPM» (или SRPM), содержащие исходный код , используемый для сборки двоичного пакета. Они имеют соответствующий тег в заголовке файла, который отличает их от обычных (B)RPM, поэтому при установке они извлекаются в /usr/src. Файлы SRPM обычно имеют расширение файла «.src.rpm» (.spm в файловых системах с ограничением в 3 символа расширения, например, старая DOS FAT ).
История
[ редактировать ]Первоначально RPM был написан в 1997 году Эриком Троаном и Марком Юингом . [1] на основе pms
, rpp
, и pm
опыты.
pm
был написан Риком Фейтом и Дугом Хоффманом в мае 1995 года для Red Hat Software. На его дизайн и реализацию большое влияние оказали pms
, систему управления пакетами, разработанную Фейт и Кевином Мартинами осенью 1993 года для дистрибутива Bogus Linux. pm
сохраняет парадигму « Нетронутые источники + исправления» pms
, добавляя при этом функции и устраняя произвольные ограничения, присутствующие в реализации. pm
обеспечивает значительно расширенную поддержку базы данных для отслеживания и проверки установленных пакетов. [4] [10] [11]
Функции
[ редактировать ]Для системного администратора, выполняющего установку и обслуживание программного обеспечения, использование управления пакетами вместо ручной сборки имеет такие преимущества, как простота, последовательность и возможность автоматизации и неинтерактивности этих процессов. используется Berkeley DB , хотя начиная с версии 4.15 в 2019 году он поддерживает сборку пакетов rpm без Berkeley DB ( В качестве серверной базы данных –disable-bdb
). [12]
К особенностям RPM относятся:
- Пакеты RPM могут быть криптографически проверены с помощью GPG и MD5.
- Оригинальный исходный архив(ы) (например,
.tar.gz
,.tar.bz2
) включены в SRPM, что упрощает проверку. - Дельта-обновление : PatchRPM и DeltaRPM, RPM-эквивалент файла исправления , могут постепенно обновлять программное обеспечение, установленное в RPM.
- Автоматическая оценка зависимостей во время сборки.
Местные операции
[ редактировать ]Пакеты могут поступать из определенного дистрибутива (например, Red Hat Enterprise Linux ) или быть созданы для него другими сторонами (например, RPM Fusion для Fedora Linux). [13] Круговые зависимости между взаимозависимыми RPM (так называемый « ад зависимостей ») могут быть проблематичными; [14] в таких случаях необходимо указать все соответствующие пакеты в одной команде установки.
Репозитории
[ редактировать ]RPM-пакеты часто собираются централизованно в одном или нескольких репозиториях в Интернете. Сайт часто имеет свои собственные репозитории RPM, которые могут либо действовать как локальные зеркала таких интернет-репозиториев, либо представлять собой локально поддерживаемые коллекции полезных RPM.
Передние части
[ редактировать ]Несколько интерфейсов RPM упрощают процесс получения и установки RPM из репозиториев и помогают разрешить их зависимости. К ним относятся:
- yum используется в Fedora Linux , CentOS 5 и выше, Red Hat Enterprise Linux 5 и выше, Scientific Linux , Yellow Dog Linux и Oracle Linux.
- DNF , представленный в Fedora Linux 18 (по умолчанию с 22 ), Red Hat Enterprise Linux 8, AlmaLinux 8 и CentOS Linux 8.
- up2date используется в Red Hat Enterprise Linux , CentOS 3 и 4 и Oracle Linux.
- Zypper используется в Mer (и, следовательно, Sailfish OS), MeeGo , [15] openSUSE и SUSE Linux Enterprise
- urpmi используется в Mandriva Linux , ROSA Linux и Mageia.
- apt-rpm — порт Advanced Packaging Tool (APT) Debian, используемый в Ark Linux. [16] PCLinuxOS и ALT Linux
- Smart Package Manager , используемый в Unity Linux, доступен для многих дистрибутивов, включая Fedora Linux .
rpmquery
, утилита командной строки, доступная (например) в Red Hat Enterprise Linux.libzypp
, для ОС Sailfish
Локальная база данных установки RPM
[ редактировать ]За кулисами менеджера пакетов работает база данных RPM, хранящаяся в /var/lib/rpm
. он использует Berkeley DB В качестве серверной части . Он состоит из единой базы данных ( Packages
), содержащий всю метаинформацию установленных RPM. Для целей индексирования создается несколько баз данных, реплицирующих данные для ускорения запросов. База данных используется для отслеживания всех файлов, которые изменяются и создаются, когда пользователь (с помощью RPM) устанавливает пакет, что позволяет пользователю (с помощью RPM) отменить изменения и удалить пакет позже. Если база данных повреждена (что возможно в случае закрытия клиента RPM ), базы данных индексов можно воссоздать с помощью команды rpm --rebuilddb
команда. [17]
Описание
[ редактировать ]Хотя формат 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
обороты в минуту с noarch.rpm
Расширение не зависит от конкретной архитектуры ЦП. Например, эти RPM-пакеты могут содержать графику и текст для использования другими программами. Они также могут содержать сценарии оболочки или программы, написанные на других интерпретируемых языках программирования, таких как Python .
Содержимое RPM также включает метку пакета , содержащую следующую информацию:
- название программного обеспечения
- версия программного обеспечения (версия, взятая из исходного исходного кода программного обеспечения)
- выпуск пакета (количество раз, когда пакет был пересобран с использованием той же версии программного обеспечения). Это поле также часто используется для указания конкретного дистрибутива, для которого предназначен пакет, путем добавления таких строк, как «mdv» (ранее «mdk») ( Mandriva Linux ), «mga» ( Mageia ), «fc4» ( Fedora Core 4). , «rh9» ( Red Hat Linux 9), «suse100» ( SUSE Linux 10.0) и т. д.
- архитектура, под которую собран пакет (i386, i686, x86_64, ppc и т.д.)
Поля метки пакета не обязательно должны совпадать с именем файла.
Упаковка библиотеки
[ редактировать ]Библиотеки распространяются в двух отдельных пакетах для каждой версии. Один содержит предварительно скомпилированный код для использования во время выполнения, а второй содержит соответствующие файлы разработки, такие как заголовки и т. д. К полю имени этих пакетов добавляется «-devel». Системный администратор должен убедиться, что версии двоичного файла и пакета разработки совпадают.
Двоичный формат
[ редактировать ]Формат является двоичным и состоит из четырех разделов: [6]
- Заголовок, который идентифицирует файл как файл RPM и содержит несколько устаревших заголовков.
- Подпись, которую можно использовать для обеспечения целостности и/или подлинности.
- Заголовок, содержащий метаданные , включая имя пакета, версию, архитектуру, список файлов и т. д.
- Файловый архив ( полезная нагрузка ), обычно имеющий формат cpio , сжатый с помощью gzip .
rpm2cpio
Инструмент позволяет получить файл cpio без необходимости установки пакета RPM. [18]- Стандартная база Linux требует использования gzip, но пакеты Fedora 30 сжимаются с помощью xz , а пакеты Fedora 31 могут быть сжаты с помощью zstd . [19] Последние версии RPM также могут использовать bzip2 , lzip , [20] или сжатие lzma .
- Формат RPM 5.0 поддерживает использование xar для архивирования.
Спецификационный файл
[ редактировать ]«Рецепт» создания пакета RPM представляет собой файл спецификации. Файлы спецификаций заканчиваются суффиксом «.spec» и содержат имя пакета, версию, номер версии RPM, шаги по сборке, установке и очистке пакета, а также журнал изменений. При желании из одного файла спецификации RPM можно собрать несколько пакетов. Пакеты RPM создаются из файлов спецификаций RPM с помощью инструмента rpmbuild.
Файлы спецификаций обычно распространяются в файлах SRPM, которые содержат файл спецификации, упакованный вместе с исходным кодом.
СРПМ
[ редактировать ]Типичный RPM — это предварительно скомпилированное программное обеспечение, готовое к непосредственной установке. Соответствующий исходный код также может распространяться. Это делается в SRPM, который также включает файл SPEC, описывающий программное обеспечение и способ его создания. SRPM также позволяет пользователю компилировать и, возможно, изменять сам код.
Пакет программного обеспечения может содержать только сценарии, независимые от платформы. В таком случае разработчик может предоставить только SRPM, который по-прежнему является устанавливаемым RPM.
НОСРК
[ редактировать ]Это специальная версия SRPM. Он содержит файл «SPEC» и, при необходимости, исправления, но не включает исходные коды (обычно из-за лицензии). [21]
Вилки
[ редактировать ]По состоянию на июнь 2010 г. [update]В разработке находятся две версии 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 Linux , Red Hat Enterprise Linux и производными , openSUSE , SUSE Linux Enterprise , Unity Linux , Mageia , [22] 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 году). [23] ), а также проектом OpenPKG , который предоставляет пакеты для других распространенных UNIX-платформ.
OpenMandriva Lx снова переключился на rpm.org [24] для версии 4.0. [ нужно обновить ]
OpenEmbedded , последний крупный пользователь RPM5, вернулся на rpm.org из-за проблем в RPM5. [25] [26]
См. также
[ редактировать ]- Autopackage — «дополнительная» система управления пакетами.
- Delta ISO — ISO-образ, содержащий файлы диспетчера пакетов RPM.
- dpkg — система управления пакетами, используемая Debian и его производными.
- Список дистрибутивов Linux на основе RPM
- pkg-config — запрашивает библиотеки для компиляции программного обеспечения из исходного кода.
Ссылки
[ редактировать ]- ^ «RPM — планы, цели и т.д.» . Макс Спевак. Архивировано из оригинала 6 октября 2012 г. Проверено 20 января 2011 г.
- ^ «Часто задаваемые вопросы по RPM.org» . Архивировано из оригинала 5 ноября 2016 г. Проверено 25 августа 2013 г.
- ^ Jump up to: а б Бейли, Эдвард К. (2000). «Глава 1: Введение в управление пакетами». Максимальная частота вращения: доведение менеджера пакетов Red Hat до предела . Red Hat, Inc., стр. 22–25. ISBN 978-1888172782 . Архивировано из оригинала 10 сентября 2016 г. Проверено 13 августа 2013 г.
- ^ "по/ЛИНГВАС" . Гитхаб. 2022-04-23. Архивировано из оригинала 23 апреля 2022 г. Проверено 23 апреля 2022 г.
- ^ Jump up to: а б Бейли, Эдвард К. (2000). «Приложение A: Формат файла RPM». Максимальная частота вращения: доведение менеджера пакетов Red Hat до предела . Red Hat, Inc., стр. 325–336. ISBN 978-1888172782 . Архивировано из оригинала 21 апреля 2016 г. Проверено 22 ноября 2010 г.
- ^ «Настройка YUM и создание локальных репозиториев на IBM AIX» . 2018-10-24. Архивировано из оригинала 03.10.2020 . Проверено 3 сентября 2020 г.
- ^ «RPM и Yum имеют большое значение для IBM i. И вот почему» . 18 июля 2018 г. Архивировано из оригинала 29 июня 2019 г. Проверено 3 сентября 2020 г.
- ^ «Менеджер пакетов» . Архивировано из оригинала 25 марта 2016 г. Проверено 4 сентября 2020 г.
- ^ «Руководство по RPM-RPM – Цели проектирования» . Архивировано из оригинала 21 марта 2014 г. Проверено 14 апреля 2014 г.
- ^ «ФАЛЬШИВОЕ ОБЪЯВЛЕНИЕ» . Архивировано из оригинала 4 ноября 2013 г. Проверено 14 апреля 2014 г.
- ^ «rpm4 поддерживал сборку rpm без Berkeley DB (–disable-bdb)» . Форумы FreeBSD . 2020-01-29. Архивировано из оригинала 23 февраля 2024 г. Проверено 18 сентября 2023 г.
- ^ «РПМ Фьюжн» . www.pmfusion.org. Архивировано из оригинала 11 февраля 2019 г. Проверено 22 ноября 2010 г.
- ^ «Анализ отклонения при проверке RPM» (PDF) . Ассоциация ЮСЕНИКС. Архивировано (PDF) из оригинала 28 июля 2011 г. Проверено 15 марта 2011 г.
- ^ «Zypper — MeeGo вики» . Архивировано из оригинала 25 сентября 2013 г. Проверено 14 апреля 2014 г.
- ^ «Часто задаваемые вопросы: О проектах» . Официальный сайт Ark Linux. Архивировано из оригинала 11 февраля 2012 г. Проверено 14 апреля 2014 г.
- ^ «Безопасное восстановление базы данных RPM» . Архивировано из оригинала 6 августа 2019 г. Проверено 11 ноября 2011 г.
- ^ «Дополнительное программное обеспечение для упаковки» . Проект Федора. Архивировано из оригинала 10 марта 2016 г. Проверено 11 ноября 2011 г.
- ^ «Переключить RPM на сжатие zstd» . Проект Fedora (Вики). Архивировано из оригинала 2 июня 2019 г. Проверено 2 июня 2019 г.
- ^ «[ИСПРАВЛЕНИЕ] Добавить поддержку lzip» . Архивировано из оригинала 4 марта 2016 г. Проверено 24 октября 2013 г.
- ^ «Как упаковать проприетарное программное обеспечение» . 10 декабря 2014 г. Архивировано из оригинала 2 июля 2018 г. Проверено 2 июля 2018 г.
- ^ «Примечания к выпуску Mageia 3: Управление пакетами» . сайт mageia.org . 19 мая 2013 г. Архивировано из оригинала 7 февраля 2014 г. Проверено 14 апреля 2014 г.
- ^ Боднар, Ладислав и Смит, Джесси (22 ноября 2010 г.). «ДистроВотч Еженедельник» . ДистроВотч . Архивировано из оригинала 23 июня 2018 г. Проверено 22 ноября 2010 г.
- ^ "Форум: Переход на RPMv4" . Архивировано из оригинала 14 января 2022 г. Проверено 3 марта 2018 г.
- ^ «YP Core — Пиро 2.3» . Проект Йокто . 12 мая 2017 г. Архивировано из оригинала 5 декабря 2017 г. Проверено 4 декабря 2017 г.
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка ) () - ^ «[Openembedded-architecture] Изменения, которые вызовет переключение с smart на dnf» . Проект Йокто . 14 февраля 2017 г. Архивировано из оригинала 05.11.2018 . Проверено 4 ноября 2018 г.
- Шредер, Джефф (30 января 2008 г.). «Расширенные строки запроса RPM» . www.digitalprognosis.com . Архивировано из оригинала 9 августа 2011 г. Проверено 28 марта 2018 г.
Внешние ссылки
[ редактировать ]- Домашняя страница проекта RPM.org
- Справочник по командам RPM и DPKG. Архивировано 28 октября 2016 г. на Wayback Machine.
- История RPM. Архивировано 1 февраля 2013 г. на archive.today Мэттом Фраем в журнале Red Hat Magazine. Архивировано 29 сентября 2007 г. в Wayback Machine.
- Как создать пакет RPM
- Видеоуроки по созданию и исправлению RPM
- Примечания к RPM: простой способ создания RPM
- Программное обеспечение для упаковки с помощью RPM. Часть 1. Сборка и распространение пакетов.
- Изучаем Linux, 101: управление пакетами RPM и YUM
- Форматы архивов
- Бесплатные системы управления пакетами
- Программное обеспечение для управления пакетами Linux
- Программное обеспечение Red Hat
- Программное обеспечение, использующее лицензию GPL
- Бесплатное программное обеспечение, написанное на C.
- Бесплатное программное обеспечение, написанное на Perl.