Linux x86 rpm package

Содержание
  1. Команды RPM Linux с примерами
  2. Как получить пакеты RPM
  3. Основные режимы для команды RPM
  4. Примеры пакетов RPM
  5. Установка
  6. 1) Как узнать информацию о пакете RPM без установки
  7. 2) Как установить пакет RPM
  8. 3) Как проверить установленный пакет RPM
  9. 4) Как просмотреть все файлы определенного установленного пакета RPM
  10. 5) Как просмотреть недавно установленные пакеты RPM
  11. 6) Как установить пакет RPM без зависимостей
  12. 7) Как заменить установленный пакет RPM
  13. Удаление
  14. 8) Как удалить пакет RPM
  15. Обновление
  16. 9) Как обновить пакет RPM
  17. Запросы
  18. 10) Как запросить все установленные пакеты
  19. 11) Как запросить конкретный пакет
  20. 12) Как запросить файл, относящийся к пакету RPM
  21. Проверка
  22. 13) Как получить информацию для определенного пакета
  23. 14) Как проверить пакет RPM
  24. 15) Как проверить все пакеты RPM
  25. Сборка пакетов библиотек для rpm-based дистрибутивов Linux
  26. Перед сборкой пакета
  27. spec-файл для сборки пакета
  28. Сборка
  29. Пара советов
  30. Установка rpm пакетов в Linux
  31. Что такое RPM?
  32. Установка RPM пакетов в Linux
  33. Установка RPM файла в GUI
  34. Выводы

Команды RPM Linux с примерами

RPM (Redhat Package Manager) – это утилита управления пакетами командной строки, используемая для установки, удаления, обновления, запросов и проверки пакетов программного обеспечения.

В этой статье я расскажу о некоторых наиболее распространенных командах Linux rpm для системного администратора.

Некоторые из Linux-дистрибутивов RPM – это Redhat, Centos, Fedora и OpenSuse.

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

Как получить пакеты RPM

Существует несколько способов получения пакетов RPM, как показано ниже:

  1. программное обеспечение CD / DVD
  2. CentOS Mirror
  3. RedHat (нужна учетная запись)
  4. Любые открытые веб-сайты репозитория

Основные режимы для команды RPM

Install : он используется для установки любого пакета RPM.
Remove : используется для удаления
Upgrade : используется для обновления существующего пакета RPM.
Query : используется для запроса любого пакета RPM.
Verify : используется для проверки пакетов RPM.

Примеры пакетов RPM

GeoIP-приложение GeoIP-1.5.0-11.el7.x86_64.rpm представляет собой библиотеку пакетов RPM для страны / города / организации для IP-адреса или сопоставления имен хостов.

GeoIP – это имя пакета, версия 1.5.0-11.el7, версия 7 и архитектура .x86_64.

Установка

1) Как узнать информацию о пакете RPM без установки

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

Мы можем использовать -qip (query info package), чтобы перечислить информацию о пакете.

2) Как установить пакет RPM

Мы можем использовать параметры -ivh для установки определенного пакета, как показано ниже.

3) Как проверить установленный пакет RPM

Мы можем использовать опцию -q с именем пакета, и она покажет, установлен ли пакет rpm или нет.

4) Как просмотреть все файлы определенного установленного пакета RPM

Мы можем перечислить все файлы установленных пакетов rpm, используя параметр -ql с командой rpm.

5) Как просмотреть недавно установленные пакеты RPM

Мы можем использовать опцию -qa с –last, она будет перечислять все недавно установленные пакеты rpm.

6) Как установить пакет RPM без зависимостей

Мы можем использовать параметры -ivh с параметрами –nodeps, для которых нет проверки зависимостей.

Чтобы установить конкретный пакет без зависимостей:

7) Как заменить установленный пакет RPM

Мы можем использовать параметры -ivh –replacepkgs для замены определенного пакета, установленного в системе, как показано ниже:

Удаление

8) Как удалить пакет RPM

Мы можем использовать -e параметры для удаления определенного пакета, установленного без зависимостей (не проверяя зависимости), как показано ниже:

Теперь введите команду ниже, чтобы гарантировать себе, что GeoIP не установлен.

Обновление

9) Как обновить пакет RPM

Мы можем использовать параметры -Uvh для обновления определенного пакета, как показано ниже:

Запросы

10) Как запросить все установленные пакеты

Мы можем использовать параметры -qa для запроса всех установленных пакетов на сервере, как показано ниже.

11) Как запросить конкретный пакет

Мы можем использовать команду grep для определения того, какой конкретный пакет установлен или нет, как показано ниже.

12) Как запросить файл, относящийся к пакету RPM

В примере номер 9 мы выводили файлы пакета RPM, а теперь мы хотим знать, что файл /usr/lib64/libGeoIP.so.1.5.0 принадлежит RPM-пакету.

Читайте также:  Подсистема windows для linux отсутствует

Проверка

13) Как получить информацию для определенного пакета

Мы можем использовать параметры -i вместе с q для получения информации для определенного пакета, как показано ниже:

14) Как проверить пакет RPM

Мы можем проверить пакет, сравнив информацию об установленных файлах пакета с базой данных rpm, используя опцию -Vp .

15) Как проверить все пакеты RPM

Мы можем проверить все установленные пакеты rpm, используя опцию -Va.

Источник

Сборка пакетов библиотек для 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 указывает атрибуты файлов по умолчанию в формате:

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

Читайте также:  Не закрепляется панель задач windows

Дальше самое интересное. Фактически существует два типа 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

Рано или поздно нам приходится устанавливать программное обеспечение не из официальных репозиториев. Там есть далеко не все пакеты, и не всегда есть самые новые версии, только что вышедших программ. Очень часто разработчики размещают на своем официальном сайте пакеты для самых популярных дистрибутивов. Обычно это deb и rpm.

Последний встречается немного реже, но если вы используете дистрибутив на базе Red Hat Enterprice Linux, вам нужен именно этот формат пакетов. Также в сети часто можно найти библиотеки и другие компоненты, которых нет в репозиториях в виде пакетов. Раньше мы уже рассматривали установку deb пакетов в Ubuntu. А в этой статье будет подробно разобрана установка rpm пакетов в linux.

Что такое RPM?

RPM или RPM Package Manager — это пакетный менеджер, используемый в дистрибутивах Linux, основанных на Red Hat. Такое же название имеет формат файлов этого пакетного менеджера.

Этот формат не очень сильно отличается от того же самого Deb. Вы можете посмотреть их детальное сравнение в статье что лучше *.deb или *.rpm. Здесь же, только отмечу, что файл rpm — это обычный cpio архив, в котором содержатся сами файлы программы, а также метаданные, описывающие куда их нужно устанавливать. База всех установленных пакетов находится в каталоге /var/lib/rpm. Из особенностей можно отметить, что rpm не поддерживает рекомендованные пакеты, а также зависимости формата или-или.

Читайте также:  Windows автоматически устанавливает 10 версию

Для управления пакетами, так же как и в Debian-системах, здесь существует консольная, низкоуровневая утилита с одноименным названием — rpm. Ее мы и будем рассматривать дальше в статье. В разных системах используются разные пакетные менеджеры, например в Red Hat используется Yum, в Fedora — DNF, а в OpenSUSE — zypper, но во всех этих системах будет работать утилита rpm.

Установка RPM пакетов в Linux

Давайте сначала рассмотрим синтаксис самой утилиты rpm:

$ rpm -режим опции пакет

Утилита может работать в одном из режимов:

  • -q, —query — запрос, получение информации;
  • -i, —install — установка;
  • -V, —verify — проверка пакетов;
  • -U, —upgrade — обновление;
  • -e, —erase — удаление.

Рассмотрим только самые интересные опции программы, которые понадобятся нам в этой статье:

  • -v — показать подробную информацию;
  • —vv — выводить отладочную информацию;
  • —quiet — выводить как можно меньше информации;
  • -h — выводить статус-бар;
  • —percent — выводить информацию в процентах о процессе распаковки;
  • —force — выполнять действие принудительно;
  • —nodeps — не проверять зависимости;
  • —replacefiles — заменять все старые файлы на новые без предупреждений;
  • -i — получить информацию о пакете;
  • -l — список файлов пакета;
  • -R — вывести пакеты, от которых зависит этот пакет;

Теперь, когда вы уже имеете представление как работать с этой утилитой, может быть рассмотрена установка rpm пакета в Linux. Самая простая команда установки будет выглядеть вот так:

sudo rpm -i имя_пакета.rpm

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

Для того чтобы посмотреть более подробную информацию в процессе установки используйте опцию -v:

sudo rpm -iv имя_пакета.rpm

Также вы можете включить отображение статус бара в процессе установки:

sudo rpm -ivh имя_пакета.rpm

Чтобы проверить установлен ли пакет, нам уже нужно использовать режим запроса:

sudo rpm -q имя_пакета

Также сразу можно удалить пакет, если он не нужен:

sudo rpm -e имя_пакета

Но у rpm так же как и у dpkg, есть один существенный недостаток. Программа не может разрешать зависимости. В случае отсутствия нужного пакета в системе, вы просто получите сообщение об ошибке и пакет не установится.

Для автоматической загрузки зависимостей во время выполнения установки rpm linux нужно использовать пакетный менеджер дистрибутива. Рассмотрим несколько команд для самых популярных RPM дистрибутивов. В RedHat и других дистрибутивах, использующих Yum используйте такую команду:

sudo yum —nogpgcheck localinstall имя_пакета.rpm

Первая опция отключает проверку GPG ключа, а вторая говорит, что мы будем выполнять установку локального пакета. В Fedora, с помощью dnf все делается еще проще:

sudo dnf install имя_пакета.rpm

Пакетный менеджер Zypper и OpenSUSE справляются не хуже:

sudo zypper install имя_пакета.rpm

Вот так очень просто выполняется установка rpm с зависимостями. Но не всем нравится работать в консоли, многие новые пользователи хотят использовать графический интерфейс для решения всех задач, в том числе и этой. Дальше мы рассмотрим несколько таких утилит.

Установка RPM файла в GUI

Если вы используете OpenSUSE, то это делается очень просто. Универсальный конфигуратор системы YaST, кроме всего прочего позволяет установить rpm пакеты. Вы можете сделать это с помощью файлового менеджера, выбрав пункт контекстного меню для файла открыть с помощью Yast или выполнив команду:

yast2 -i имя_пакета.rpm

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

Выводы

Теперь вы знаете как выполняется установка rpm файла в Linux. На самом деле это очень просто и даже существует не только один способ, а целых несколько. Хотя графических утилит здесь немного меньше чем в Ubuntu. Но консольных утилит полностью хватает. Если у вас остались вопросы, спрашивайте в комментариях!

Источник

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