Файлы rpm для linux

Команда RPM в Linux

Менеджер пакетов RPM (RPM) — это мощная система управления пакетами, используемая Red Hat Linux и ее производными, такими как CentOS и Fedora. RPM также относится к команде rpm и формату файла .rpm . Пакет RPM состоит из архива файлов и метаданных, включая такую информацию, как зависимости и место установки.

В этом руководстве мы поговорим о том, как использовать команду rpm для установки, обновления, удаления, проверки, запроса и иного управления пакетами RPM.

Установка, обновление и удаление пакетов RPM

Обычно для установки нового пакета в дистрибутивах на основе Red Hat вы используете команды yum или dnf , которые могут разрешить и установить все зависимости пакетов.

Вы всегда должны предпочитать использовать yum или dnf rpm при установке, обновлении и удалении пакетов.

Перед установкой пакета RPM вы должны сначала загрузить пакет в свою систему с помощью браузера или инструментов командной строки, таких как curl или wget .

При установке пакетов RPM убедитесь, что они созданы для вашей системной архитектуры и вашей версии CentOS . Будьте особенно осторожны при замене или обновлении важных системных пакетов, таких как glibc, systemd или других служб и библиотек, которые необходимы для правильного функционирования вашей системы.

Только root или пользователи с привилегиями sudo могут устанавливать или удалять пакеты RPM.

Чтобы установить пакет RPM с rpm , используйте параметр -i , за которым следует имя пакета:

Параметр -v указывает rpm показывать подробный вывод, а параметр -h показывает индикатор выполнения, отмеченный хешем.

Вы можете пропустить загрузку и указать URL-адрес RPM-пакета команде rpm :

Чтобы обновить пакет RPM, используйте параметр -U . Если пакет не установлен, он будет установлен:

Если пакет, который вы устанавливаете или обновляете, зависит от других пакетов, которые в настоящее время не установлены, rpm отобразит список всех недостающих зависимостей. Вам придется скачать и установить все зависимости вручную.

Чтобы установить пакет RPM без установки всех необходимых зависимостей в системе, используйте параметр —nodeps :

Чтобы удалить (стереть) пакет RPM, используйте параметр -e :

Параметр —nodeps также полезен, когда вы хотите удалить пакет, не удаляя его зависимости:

Параметр —test указывает rpm запускать команду установки или удаления, фактически ничего не делая. Он только показывает, будет ли команда работать или нет:

Запрос пакетов RPM

Параметр -q указывает команде rpm выполнить запрос.

Чтобы запросить (найти), установлен ли определенный пакет, передайте имя пакета команде rpm -q . Следующая команда покажет вам, установлен ли в системе пакет OpenJDK 11 :

Если пакет установлен, вы увидите что-то вроде этого:

Передайте -i чтобы получить больше информации о запрошенном пакете:

Чтобы получить список всех файлов в установленном пакете RPM:

Если вы хотите узнать, к какому установленному пакету принадлежит конкретный файл, введите:

Чтобы получить список всех установленных пакетов в вашей системе, используйте параметр -a :

Проверка пакетов RPM

При проверке пакета команда rpm проверяет, существует ли каждый файл, установленный пакетом, в системе, дайджест файла, право собственности, разрешения и т. Д.

Чтобы проверить установленный пакет, используйте параметр -V . Например, чтобы проверить пакет openldap, вы должны запустить:

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

Например, следующий результат показывает, что mTime файла был изменен («T»):

Обратитесь к странице руководства RMP о том, что означает каждый символ.

Чтобы проверить все установленные пакеты rpm, выполните следующую команду:

Выводы

rpm — это низкоуровневый инструмент командной строки для установки, запроса, проверки, обновления и удаления пакетов RMP. При установке пакетов RPM следует предпочесть использование yum или dnf поскольку они автоматически разрешают все зависимости за вас.

Для получения дополнительных сведений обо всех доступных параметрах команд введите в терминале man rpm или посетите веб-сайт RPM.org .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

Как установить файлы (пакеты) RPM в CentOS Linux

Менеджер пакетов RPM (RPM) — это мощная система управления пакетами, используемая Red Hat Linux и ее производными, такими как CentOS и Fedora. RPM также относится к команде rpm и формату файла .rpm .

Репозитории CentOS содержат тысячи пакетов rpm, которые можно установить с помощью диспетчера программного обеспечения рабочего стола или из командной строки с помощью утилит yum , dnf и rpm . Некоторые библиотеки и приложения упакованы в формате rpm, но не включены ни в один репозиторий CentOS. Эти приложения необходимо загрузить с веб-сайтов разработчика и установить вручную.

В этом руководстве мы объясним, как установить файлы rpm на CentOS.

Будьте особенно осторожны при установке пакетов rpm из неофициальных источников. Пакет должен быть построен для вашей системной архитектуры и версии CentOS . Никогда не заменяйте и не обновляйте важные системные пакеты, такие как glibc, systemd или другие службы и библиотеки, которые необходимы для правильного функционирования системы.

Читайте также:  Как записать скачанный линукс

Только root или пользователь с привилегиями sudo может устанавливать или удалять пакеты RPM.

Установка файлов rpm с помощью yum и dnf

yum и dnf — это инструменты командной строки для установки, обновления, удаления и иного управления пакетами rpm в CentOS и связанных дистрибутивах Linux.

Начиная с CentOS 8 dnf заменил yum в качестве менеджера пакетов по умолчанию. dnf обратно совместим с yum .

Вы можете продолжать использовать yum в CentOS 8, поскольку это псевдоним для dnf .

Чтобы установить локальные пакеты rpm с помощью yum или dnf , используйте команду install , за которой следует путь к файлу. В приведенном ниже примере мы устанавливаем браузер Chrome :

И yum и dnf разрешат и установят все зависимости пакета. Вам будет предложено ввести Y чтобы продолжить:

Вот и все, приложение установлено в вашей системе, и вы можете начать им пользоваться.

Вы также можете установить пакет rpm прямо с URL-адреса:

Установка файлов rpm с помощью rpm

rpm — это низкоуровневый менеджер пакетов для систем RHEL.

Вы всегда должны предпочесть использовать yum или dnf rpm при установке, обновлении и удалении пакетов, поскольку это не разрешает зависимости.

Чтобы установить пакеты rpm с помощью rpm используйте параметр -i (или -U ), за которым следует путь к файлу:

Если пакет, который вы устанавливаете или обновляете, зависит от других пакетов, которые в настоящее время не установлены, rpm отобразит список всех недостающих зависимостей. Вам нужно будет установить все зависимости.

rpm также принимает установку пакетов с URL-адреса:

Выводы

В CentOS вы можете установить локальный rpm-файл с помощью yum или dnf точно так же, как если бы вы устанавливали пакет из репозиториев.

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

Источник

Сборка пакетов библиотек для rpm-based дистрибутивов Linux

Во многих наших проектах используются open-source библиотеки. Когда разработка ведется под одну конкретную платформу, нет смысла собирать одни и те же библиотеки из исходников каждый раз, когда к проекту подключается новый разработчик. Кроме того, установка библиотек а-ля make && sudo make install считается плохим тоном, поскольку система засоряется «бесхозными» файлами, о которых нет информации в базе данных менеджера пакетов RPM.

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

Инструкция будет основываться на примере Red Hat Enterprise Linux 6, но с небольшими изменениями ее можно будет адаптировать и для других дистрибутивов. Для примера будем собирать пакет из библиотеки zeromq.

Перед сборкой пакета

Первое, что нужно сделать перед сборкой — убедиться, что нужный вам пакет не собрал кто-то до вас. Часто на таких ресурсах, как rpmfind.net и rpm.pbone.net можно найти то, что вам нужно. Но если не нашлось необходимой версии библиотеки или нет сборки под вашу платформу, то придется собирать пакет самому.

rpmbuild

Создаем файл конфигурации утилиты rpmbuild, чтобы она узнала, где находится созданное дерево каталогов:

rpmbuild при запуске будет искать файлы пакета в директории

/rpmbuild/BUILDROOT/ . Разберемся, как именуются RPM-пакеты, на примере zeromq:

Здесь:

  • zeromq — собственно, имя пакетируемого ПО;
  • 3.2.4 — версия ПО;
  • 1.rhel6 — номер сборки пакета (release number) — сколько раз данная версия ПО собиралась в rpm-пакет. Суффиксом rhel6 или el6 обычно обладают пакеты для Red Hat Enterprise Linux 6;
  • x86_64 — процессорная архитектура, под которую скомпилировано ПО.

Обратите внимание на знаки, разделяющие поля имени пакета. Они должны быть именно такими, как в примере.

Итак, создаем директорию для zeromq в BUILDROOT:

Сборка библиотеки

Само собой, перед сборкой бинарного пакета, нужно скомпилировать саму библиотеку. Если библиотека использует систему сборки GNU Autotools, то обычно это делается командами:

Теперь устанавливаем библиотеку в созданную нами директорию в BUILDROOT:

Параметр DESTDIR не всегда обрабатывается в мейкфайлах. Например, qmake генерирует мейкфайлы, которые игнорируют этот параметр. Если библиотека использует систему сборки, отличную от GNU Autotools, то прочитайте в соответствующем руководстве, какие параметры нужно передать при сборке, чтобы установить библиотеку в указанную директорию.

spec-файл для сборки пакета

/rpmbuild/SPECS. Рассмотрим пример файла zmq.spec для библиотеки zeromq:

В начале файла указывается минимальный набор полей с информацией о пакете. Из значений первых трех полей (Name, Version, Release) формируется имя пакета, поэтому важно, чтобы там были указаны правильные значения. Если значения не будут соответствовать имени каталога с деревом файлов собираемого пакета, rpmbuild выдаст ошибку. Поле License также является обязательным — без него rpmbuild откажется собирать пакет.

Назначение секции %description очевидно. Секции %post и %postun содержат скрипты, выполняющиеся после установки файлов пакета в систему и после удаления файлов пакета из системы, соответственно. Это полезно, если пакет устанавливает динамические библиотеки (.so) в нестандартные директории (т. е. не в /lib, /usr/lib, /lib64 или /usr/lib64). В этом случае пакет должен предоставлять файл конфигурации для ldconfig и устанавливать его в /etc/ld.so.conf.d. Команда ldconfig обновляет кэш динамического загрузчика, добавляя в него все библиотеки, найденные в директориях, указанных в конфигурационных файлах.

В секции %files указывается список файлов, которые пакуются в rpm. Директива %defattr указывает атрибуты файлов по умолчанию в формате:

Читайте также:  Заставка рабочего стола windows 10 море

указывается в восьмеричном виде, например, «644» для rw-r—r—. Атрибут может быть опущен. Вместо атрибутов, которые не должны меняться для устанавливаемых файлов, можно указать дефис. Директории, указанные в секции %files, будут внесены в пакет вместе со всем их содержимым.

Дальше самое интересное. Фактически существует два типа RPM-пакетов библиотек. В одних находятся собственно сами файлы динамических библиотек, необходимые для работы программ, которые скомпонованы с этими библиотеками. Например, пакет zeromq-3.2.4-1.rhel6.x86_64.rpm предоставляет только два файла: /usr/lib64/libzmq.so.3.0.0 и символьную ссылку на него, /usr/lib64/libzmq.so.3. Другой тип пакетов содержит файлы, необходимые для разработки приложений с использованием предоставляемой библиотеки. К имени таких пакетов добавляется суффикс «-devel», например, zeromq-devel-3.2.4-1.el6.x86_64.rpm. В таких пакетах обычно содержатся заголовочные файлы C/C++, документация, статические библиотеки (.a), и эти пакеты являются зависимыми от пакетов первого типа.

В приведенном выше spec-файле директива %package позволяет собрать «дочерний» пакет одним запуском rpmbuild. Значения полей заголовков дочернего пакета наследуются от родительского, но их можно переопределить. Поле Requires задает дополнительную зависимость от родительского пакета. Заметьте, что секция %files пакета zeromq-devel содержит файл /usr/lib64/libzmq.so. Это символьная ссылка на настоящий файл с динамической библиотекой. Он необходим компоновщику ld на этапе сборки приложения с использованием библиотеки, поскольку он ищет файлы динамических библиотек, начинающиеся на «lib» и заканчивающиеся на «.so».

Сборка

Перед сборкой нужно иметь в виду две вещи.
Первое: при успешной сборке пакета rpmbuild очистит директорию BUILDROOT. Так что на всякий случай сделайте резервную копию пакетируемых файлов.
Второе: никогда не собирайте пакеты с правами root. Здесь объясняется, почему так нельзя делать.

Теперь все готово для сборки пакета. Запускаем rpmbuild:

Параметр -bb означает «build binary», то есть, собрать бинарный пакет. Помимо бинарных пакетов есть еще пакеты исходных кодов, но они здесь не обсуждаются.

В случае успеха полученный rpm-пакет будет сохранен в папке RPMS.

Пара советов

Если не знаете, что писать в полях заголовка spec-файла для пакетируемой библиотеки, можно взять RPM-пакет для другого дистрибутива c указанных выше ресурсов и посмотреть, что пишут там:

Здесь «q» означает «режим запросов (query)», «i» — получение информации о пакете, «p» — получение информации об указанном файле пакета (без этой опции будет получена информация о пакете, установленном в системе, если он установлен).

Если не знаете, какие файлы принадлежат пакету devel, а какие — пакету с библиотеками, но у вас есть оба пакета для другого дистрибутива, можно распаковать дерево файлов, предоставляемых данным пакетом, в текущую директорию:

Утилита rpm2cpio пишет в стандартный вывод cpio-архив, хранящийся в rpm-пакете; утилита cpio распаковывает архив, принятый из стандартного ввода. Параметр «i» включает режим распаковки, а «d» создает нужные директории.

Посмотреть, какие файлы предоставляет пакет, можно и не распаковывая его, с помощью опции «l»:

Источник

🏋️♀️ Как установить / удалить / запросить / обновить RPM пакеты в Linux (Шпаргалка)

RPM – это мощный менеджер программного обеспечения, который можно использовать для создания, установки, запроса, проверки, обновления и удаления отдельных пакетов программного обеспечения.

Пакет RPM состоит из архива файлов и информации о пакете, такой как имя, версия, описание и информация о зависимостях от других пакетов RPM.

RPM – это больше, чем инструмент для Red Hat

Многие другие современные дистрибутивы, такие как Ubuntu и SuSE, также используют RPM.

Преимущества использования RPM включают в себя:

  • Упрощенное распространение, установка, обновление и удаление программного обеспечения
  • Гарантирует, что:
    необходимое программное обеспечение установлено в системе.
    версии обязательного программного обеспечения остаются совместимыми.
    локально модифицированные файлы конфигурации не засоряются при обновлении RPM.
    локально измененные файлы конфигурации сохраняются с суффиксом «.rpmsave», если пакет будет удален позже.
  • Позволяет подтвердить, что установленное программное обеспечение не было изменено, модифицировано, повреждено или изменено каким-либо образом.

RPM хранит информацию об установленных пакетах в каталоге «/var/lib/rpm».

Компоненты инструмента RPM:

  • Пользовательская база данных, содержащая информацию обо всем программном обеспечении, установленном в системе, собранную с отдельных RPM.
  • Исполняемый файл «/bin/rpm».
  • Доступные через Интернет репозитории доступных пакетов RPM.

Типы RPM-пакетов

RPM-пакеты делятся на две категории: исходные и бинарные.

Исходный RPM всегда можно распознать, поскольку имя файла заканчивается строкой “.src.rpm”.

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

В исходном RPM нет исполняемых файлов конечного пользователя. Обычно только разработчики заинтересованы в RPM с исходным кодом.

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

Например, двоичный файл RPM:

Он содержит файлы, которые можно использовать только на 64-битном процессоре Intel X86.

Другие общие значения архитектуры включают «i386» для 32-разрядных хостов Intel.

Некоторые двоичные RPM-пакеты могут быть установлены на любой архитектуре процессора, потому что их файлы будут работать на любом хосте;

Примером этих пакетов «.noarch.rpm» является RPM «tzdata», который содержит информацию о мировых часовых поясах.

Чтобы обновить вашу систему до последней версии пакета, вам потребуется самая последняя двоичная RPM-версия.

Схема именования RPM

Каждый пакет RPM содержится в одном файле.

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

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

Этот RPM предназначен для оболочки BASH («/bin/bash»).

Читайте также:  Windows 10 закрывается калькулятор

Имя файла состоит из нескольких частей:

  • [name] – это название программы или пакета. [name обычно присваивается автором программы. В нашем примере разработчики решили назвать свой продукт «bash» по причинам, которые показались им забавными.
  • [version] определяет, какая версия программного обеспечения содержит этот RPM. Номер [версии] присваивается автором программы. Использование номера позволяет определить, какая версия авторских источников использовалась для создания RPM.
  • [release] предоставляет номер версии самого файла RPM, а не версию исходных файлов автора. Обновленная RPM может быть выпущена для предоставления исправленной версии оригинального программного обеспечения автора. Патч не обязательно должен быть от оригинального разработчика, поэтому RPM-версия увеличивается вместо [version].
  • [arch] описывает содержимое RPM и сообщает, содержит ли этот файл источник продукта («.src.rpm»), независимые от архитектуры файлы («.noarch.rpm») или файлы, которые могут быть установлены только в определенный тип хоста («.sh.rpm» будет работать только на встроенном процессоре STRONGHOLD).

Примечание:[version] контролируется первоначальным автором, а [release] контролируется тем, кто создал RPM.

Понимание версий RPM

Поля RPM [version] и [release] не всегда строго числовые и могут содержать другие символы, кроме обычных цифр.

Обычно можно увидеть как версию «10», так и версию «10а» в одном и том же пакете.

Иногда выбрать самую последнюю версию может быть сложно.

Вот как сам RPM сравнивает номера версий и выпусков внутри себя:

1. Удалите префикс [name] и суффикс «. [Arch] .rpm». Например,:
«Bash-3.1-16.1.x86_64.rpm» становится «3.1-16.1», а «bash-3.1-16.5a.1.x86_64.rpm» становится «3.1-16.5a.1»

2. Сравнивайте оставшиеся строки посимвольно слева направо, пока не встретите цифру.

Если символы отличаются, какой бы символ не появился позже в последовательности сопоставления, это более поздние варианты.

3. При обнаружении цифры преобразуйте всю последовательность цифр в одно двоичное число. В нашем примере два символа «16» объединяются в значение шестнадцать (16). Полученные двоичные значения сравниваются, и чем больше значение, тем выше новизна.

Таким образом, RPM с [версией] «0010» является более новым, чем RPM с «версией» «9».

Шаги 2 и 3 повторяются по мере необходимости, пока не произойдет различие.

Установка и удаление файлов

Примечание. Обычно только один или несколько RPM-пакетов могут быть установлены одновременно.

Более поздние версии обычно устанавливаются с использованием функции RPM «-U» (обновление) вместо функции «-i» RPM.

Распространенными исключениями из единственного правила RPM являются RPM ядра.

В системе обычно установлено несколько версий ядер; У RPM есть список, у которых может быть установлено несколько версий.

Чтобы удалить одну версию, когда установлено несколько, необходимо полностью указать имя и версию пакета.

В архитектуре x86_64 обычно устанавливаются как 32-разрядные пакеты «.i386», так и 64-разрядные пакеты «.x86_64», поддерживающие как 32-разрядные, так и 64-разрядные приложения.

Обычно RPM не отображает архитектуру пакета в запросе, но вы можете отобразить его вручную.

Установка и удаление

Подсказка: никогда, никогда не используйте опцию «-U» для установки нового RPM ядра. Функция обновления «-U» сначала удаляет текущий RPM из системы, а затем пытается установить новый RPM. Любая проблема, которая препятствует установке нового RPM, приведет к тому, что система не будет загружаться. Это не то, что вам нужно, поэтому всегда используйте ключ «-i» для установки RPM ядра.

Запросы (пакеты и / или информация)

Используйте запрос для получения информации об установленных пакетах.

Вы можете запросить все установленные пакеты или один установленный пакет.

Вы также можете узнать, какой RPM предоставляет конкретный файл.

Информация

по умолчанию (имя пакета)
-i: общая информация
-l: список файлов

Примеры

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

Более поздние версии инструмента RPM позволяют сделать это кратко:

Запросы – проверка (файлы)

База данных RPM содержит множество атрибутов для каждого файла, установленного RPM.

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

Примечание. Во многих дистрибутивах Linux имеется RPM «с предварительной связью», который пытается уменьшить время, необходимое для запуска приложения с использованием общей библиотеки (в большинстве приложений используется как минимум одна общая библиотека и, возможно, десятки), путем добавления специальной информации непосредственно в программный файл приложения.

Добавление этой информации делает запуск приложений быстрее, но изменения файла делают недействительными большинство атрибутов файла в базе данных RPM, таких как дата последнего изменения файла, размер файла и контрольная сумма файла MD5.

Запросы – проверка (пакеты)

Восстановить базу данных RPM

Средство RPM использует свою собственную реализацию базы данных для хранения своей информации

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

Если ваша база данных RPM зависла или повреждена, вы можете попытаться восстановить ее с помощью этих команд. Этот процесс не гарантированно работает.

Вы должны войти в систему с привилегиями суперпользователя (он же «root») для этих действий.

Команды могут быть скопированы и вставлены непосредственно в окно рутового терминала.

1. Убедитесь, что в вашей системе не запущены процессы RPM. Используйте команду ps, чтобы идентифицировать их. Используйте команду kill, чтобы завершить любые процессы «rpm», которые вы найдете; «kill -9» на всякий случай.

2. Удалите файлы блокировки, которые использует RPM:

3. Если вы испытыли зависание команды «rpm», попробуйте снова.

Если это работает, это все. Если нет, выполните Шаг № 1 и № 2 снова. Затем перейдите к следующему шагу.

4. Сделайте резервную копию вашей базы данных RPM:

Источник

Оцените статью