Что такое линукс рпм
Установка rpm пакетов в Linux
Рано или поздно нам приходится устанавливать программное обеспечение не из официальных репозиториев. Там есть далеко не все пакеты, и не всегда есть самые новые версии, только что вышедших программ. Очень часто разработчики размещают на своем официальном сайте пакеты для самых популярных дистрибутивов. Обычно это deb и rpm.
Последний встречается немного реже, но если вы используете дистрибутив на базе Red Hat Enterprice Linux, вам нужен именно этот формат пакетов. Также в сети часто можно найти библиотеки и другие компоненты, которых нет в репозиториях в виде пакетов. Раньше мы уже рассматривали установку deb пакетов в Ubuntu. А в этой статье будет подробно разобрана установка rpm пакетов в linux.
Что такое RPM?
Установка RPM пакетов в Linux
Давайте сначала рассмотрим синтаксис самой утилиты rpm:
Утилита может работать в одном из режимов:
Рассмотрим только самые интересные опции программы, которые понадобятся нам в этой статье:
Теперь, когда вы уже имеете представление как работать с этой утилитой, может быть рассмотрена установка rpm пакета в Linux. Самая простая команда установки будет выглядеть вот так:
Для работы с командной текущей директорией должна быть папка с пакетом. Здесь мы устанавливаем режим установки и передаем файл пакета. При успешной установке утилита не выведет ничего, если произойдет ошибка, вы об этом узнаете.
Также вы можете включить отображение статус бара в процессе установки:
Чтобы проверить установлен ли пакет, нам уже нужно использовать режим запроса:
Также сразу можно удалить пакет, если он не нужен:
Но у rpm так же как и у dpkg, есть один существенный недостаток. Программа не может разрешать зависимости. В случае отсутствия нужного пакета в системе, вы просто получите сообщение об ошибке и пакет не установится.
Для автоматической загрузки зависимостей во время выполнения установки rpm linux нужно использовать пакетный менеджер дистрибутива. Рассмотрим несколько команд для самых популярных RPM дистрибутивов. В RedHat и других дистрибутивах, использующих Yum используйте такую команду:
Первая опция отключает проверку GPG ключа, а вторая говорит, что мы будем выполнять установку локального пакета. В Fedora, с помощью dnf все делается еще проще:
sudo dnf install имя_пакета.rpm
Пакетный менеджер Zypper и OpenSUSE справляются не хуже:
sudo zypper install имя_пакета.rpm
Вот так очень просто выполняется установка rpm с зависимостями. Но не всем нравится работать в консоли, многие новые пользователи хотят использовать графический интерфейс для решения всех задач, в том числе и этой. Дальше мы рассмотрим несколько таких утилит.
Установка RPM файла в GUI
Если вы используете OpenSUSE, то это делается очень просто. Универсальный конфигуратор системы YaST, кроме всего прочего позволяет установить rpm пакеты. Вы можете сделать это с помощью файлового менеджера, выбрав пункт контекстного меню для файла открыть с помощью Yast или выполнив команду:
В Fedora для тех же целей вы можете использовать менеджер приложений дистрибутива. Раньше было еще несколько универсальных утилит для решения этой задачи, но сейчас они уже все устарели.
Выводы
Теперь вы знаете как выполняется установка rpm файла в Linux. На самом деле это очень просто и даже существует не только один способ, а целых несколько. Хотя графических утилит здесь немного меньше чем в Ubuntu. Но консольных утилит полностью хватает. Если у вас остались вопросы, спрашивайте в комментариях!
Команда RPM в Linux
В этом руководстве мы поговорим о том, как использовать команду rpm для установки, обновления, удаления, проверки, запроса и иного управления пакетами RPM.
Установка, обновление и удаление пакетов RPM
Вы всегда должны предпочитать использовать yum или dnf rpm при установке, обновлении и удалении пакетов.
Только root или пользователи с привилегиями sudo могут устанавливать или удалять пакеты RPM.
Вы можете пропустить загрузку и указать URL-адрес RPM-пакета команде rpm :
Если пакет, который вы устанавливаете или обновляете, зависит от других пакетов, которые в настоящее время не установлены, rpm отобразит список всех недостающих зависимостей. Вам придется скачать и установить все зависимости вручную.
Запрос пакетов RPM
Если пакет установлен, вы увидите что-то вроде этого:
Чтобы получить список всех файлов в установленном пакете RPM:
Если вы хотите узнать, к какому установленному пакету принадлежит конкретный файл, введите:
Проверка пакетов RPM
При проверке пакета команда rpm проверяет, существует ли каждый файл, установленный пакетом, в системе, дайджест файла, право собственности, разрешения и т. Д.
Если проверка прошла успешно, команда не выведет никаких результатов. В противном случае, если некоторые из проверок не пройдут, отобразится символ, указывающий на неудачный тест.
Например, следующий результат показывает, что mTime файла был изменен («T»):
Обратитесь к странице руководства RMP о том, что означает каждый символ.
Чтобы проверить все установленные пакеты rpm, выполните следующую команду:
Выводы
rpm — это низкоуровневый инструмент командной строки для установки, запроса, проверки, обновления и удаления пакетов RMP. При установке пакетов RPM следует предпочесть использование yum или dnf поскольку они автоматически разрешают все зависимости за вас.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
linux-notes.org
Хочу создать заметку по использованию утилиты rpm (пакетного менеджера) для работы с rpm пакетами. В своей статье «Команда RPM в примерах» я расскажу как можно выполнять различные операции с пакетами rpm, и для удобства использования, я сохраню их себе.
Команда RPM в примерах
Если необходимо удалить определенный пакет, назовем его rpm_some_package, то нужно выполнить команду:
Если необходимо показать список всех установленных rpm пакетов, используйте:
PS: Можно отобрать нужные пакеты (со всех установленный) и показать список, например для nginx:
Допустим, вам нужно просмотреть некоторую информацию о конкретном пакете (допустим — это rpm_some_package):
Если необходимо установить определенный пакет, назовем его rpm_some_package с выводом на экран и с прогресс-баром то нужно выполнить команду:
Если необходимо обновить некий пакет rpm_some_package, но без всяких изменений в конфигурационных файлов ( если отсутствует пакет, то он будет установлен):
Чтобы установить пакет rpm_some_package с выводом всех действий на экран и без контроля всех зависимостей, используйте:
Чтобы обновить пакет rpm_some_package ( если он установлен), используйте:
Чтобы показать список функциональностей которые предоставляются, выполните:
Показать историю ревизий данного пакета rpm_some_package:
Вывести скрипты, которые запускаются при установке/удалении пакета rpm_some_package:
Выполнить проверку ( узнать какому пакету относится указанный файл), то нужно прописать полный путь к файлу:
Показать какие пакеты относятся в группе пакетов ( fedora, redhat ):
Показать список файлов конфигурации которые входят в пакет rpm_some_package:
Показать весь список файлов которые входят в пакет rpm_some_package:
Показать список всех пакетов, которые необходимы для установки данного пакета rpm_some_package по его зависимостям:
Вывести список файлов, которые входят в пакет, но ещё не установленны в систему:
Команда что ниже выводит список всех rpm зависимостей:
Если вы случайно обновили rpm до новой версии, вы можете вернуть все как было, используя команду:
Вывести содержимое всех пакетов которые установлены на ОС:
Выполнить установку пакета, который собранный из исходных кода:
Выполнить проверку пакета, который ещё не установлен на сервере:
Извлечь из пакета файлы которые содержат в своём имени bin:
Выполнить импорт публичный (public) ключа с цифровой подписью:
Выполнить проверку подписи пакета rpm_some_package:
Выполнить проверку на целостность установленного содержимого пакета:
Показать какой размер, полномочия, тип, владельца, группу, а так же MD5 сумму и дату последнего изменения пакета rpm_some_package:
Выполнить сборку пакета rpm_some_package из исходного кода:
Для более детального ознакомления, используйте:
На этом, у меня все и я завершаю свою тему «Команда RPM в примерах».
Linux.yaroslavl.ru
Последнее изменение файла: 20011210
RPM. Управление пакетами программ в Linux от Red Hat
RPM (Red Hat Package Manager) представляет собой средство поиска, загрузки и установки пакетов программ, а также получения информации об установленных пакетах и их удаления. Информация об установленных пакетах хранится в БД RPM. Портирован под AIX, IRIX, и другие виды Unix. Распространяется под лицензией GNU GPL.
Альтернативным способом установки является загрузка исходных текстов программы (обычно в виде архива tar) и самостоятельная конфигурация (configure, automake), компиляция и сборка (make), установка (make install) и настройка. Сервера я предпочитаю устанавливать именно так. Но при этом приходится помнить какой файл куда установился, иначе будут проблемы при обновлении или удалении программы. А теперь представьте установку сотни программ при обновлении операционной системы или приобретении нового компьютера!
Имя файла, содержащего пакет имеет следующую структуру:
метка_пакета.архитектура.rpm
где метка_пакета это
имя_программы—версия_программы—версия_пакета
Имя программы может представлять собой как оригинальное имя, данное автором программы, так и имя для нескольких программ, собранных вместе, или имя для части программы. В последнем случае обычно содержит тире, например: glibc, glibc-devel, glibc-profile. На самом деле никто не мешает назвать файл по-другому, но метка пакета хранится внутри него.
При установке Red Hat Linux имеется возможность установить пакет rpmdb-redhat-7.1, который представляет собой базу данных всех пакетов, входящих в дистрибутив RH 7.1 и ставится (30MB!) в /usr/lib/rpmdb/i386-redhat-linux/redhat.
Если вы знаете название пакета, обеспечиваемого ресурса, имя разделяемой библиотеки или полное имя файла, то можно воспользоваться поиском пакета на rpmfind.net (бывший rufus.w3.org). Имеются также индексы rpm2html (категории, дистрибутивы, поставщики, дата создания, имя). Там же можно взять и сам пакет. Пакеты появляются в хранилище раньше, чем информация о них на сайте. И похоже, что некоторые дистрибутивы не включаются в БД вовсе (например, sourceforge), но их всегда можно просмотреть вручную по адресу http://rpmfind.net/linux/. Базу данных в формате RDF можно скопировать к себе для локального поиска (190 MB ;). Или взять с помощью wget хотя бы fullIndex.rdf.gz и положить его в
/.rpmfinddir для rpmfind (сделать это самостоятельно у rpmfind не хватает терпения). В этом файле можно делать поиск по полям name и summary. Да мало ли что можно найти среди нескольких сотен гигабайт! К сожалению, это число надо делиь на 10, так как один и тот же пакет встречается во множестве вариантов. ISO-образы отдает только, если вы можете обеспечить скорость загрузки не менее 100 KB/sec. Файлы отдаются по FTP, HTTP и rsync.
Основные зеркала: fr.rpmfind.net, fr2.rpmfind.net, speakeasy.rpmfind.net. Полный список зеркал (точнее сайтов, использующих технологию rpm2html, так как состав БД на зеркалах может отличаться) приведен здесь. Особенно хочется отметить http://rpmfind.userfriendly.net, содержащий более 200 ГБ rpm, в том числе sourceforge.
Пакеты, собранные специально под Red Hat можно найти на freshrpms или rhcontrib или GNOME hide или falsehope (каково название ;).
Если у вас есть опыт установки пакетов, то вы должно быть уже знакомы с сообщением:
error: failed dependencies:
libsuperpuper.so.10 is needed by super-1.5-4
Иногда (и очень даже часто) из такого сообщения трудно понять как называется пакет, который предоставляет эту libsuperpuper.so.10? А когда его найдешь, то оказывается, что он тоже требует какой-то библиотеки и так далее (как-то раз я дошел до 5-го «уровня вложенности» после чего решил, что мне эта программа нужна не так уж сильно ;0).
rpm2html позволяет строить набор HTML-страниц и RDF-базу с описанием пакетов и их взаимозависимостей из набора пакетов. Это облегчает поиск пакетов, которые необходимо установить перед установкой требуемого вам пакета, если они входят в один набор (например, один и тот же дистрибутив). Результат работы rpm2html используется как командой rpmfind, так и сайтом rpmfind.net (http://rpmfind.net/linux/RPM/). Строится список пакетов, отиндексированный по категориям, дистрибутивам, поставщикам, дате создания, именам пакетов. Для каждого пакета создается отдельная страница, содержащая информацию из основных тэгов, список ресурсов которые пакет предоставляет и которые он требует. Упоминание каждого ресурса является ссылкой на посвященную ему страницу, на которой указано какой пакет(ы) его предоставляет. К сожалению, нет обратных ссылок (какие пакеты данный ресурс требуют) и индекса ресурсов.
Например, секция для локально установленных пакетов выглядит так (метка localbase зарезервирована для этого случая):
Информация о ключе Red Hat приведена на их сайте (Red Hat, Inc ).
Вместо имени файла можно указывать URL (в этом случае используются также ключи: —ftpproxy host, —ftpport proxy-port, —httpproxy host, —httpport proxy-port). Если указано имя пользователя, но опущен пароль, то он запрашивается интерактивно(это позволяет не светить пароль в командной строке и на экране). FTP используется в пассивном режиме (PASV).
Ключ —test (—nobuild) позволяет проверить возможность установки пакета без реальной установки. Ключ -vv позволяет вывести множество информации в процессе установки.
Ключ —force позволяет обойти все проверки при установке пакета, кроме проверки зависимости от других пакетов.
При загрузке со спасательной дискеты полезен ключ —root путь, который определяет корень файловой системы для устанавливаемых пакетов (в т.ч. выполняется chroot() при запуске пред- и постустановочных скриптов) и базы данных пакетов.
Ключ —excludepath путь позволяет исключить из установки файлы, имена которых начинаются с путь. Ключ —excludedocs позволяет исключить из установки файлы документации.
При удалении пакета проверяется, что нет пакетов, зависящих от удаляемого (обходится ключем —nodeps); что имеется только одна версия указанного пакета (обходится ключем —allmatches); выполняется подготовительный скрипт (отменяются ключами —noscripts, —nopreun); если конфигурационный файл был изменен, то создается его копия (с суффиксом .rpmsave); удаляются все принадлежащие пакету файлы, если они не принадлежат другому пакету; выполняется завершающий удаление скрипт (отменяются ключами —noscripts, —nopostun); выполняются триггер-скрипты, активируемые удалением пакета (отменяются ключами —notriggers, —notriggerun, —notriggerpostun); обновляется база данных установленных пакетов.
Ключ —test позволяет проверить возможность удаления пакета без реального удаления. Ключ -vv позволяет вывести множество информации в процессе удаления.
Ключ —repacked позволяет собрать удаляемые файлы в пакет (/var/tmp).
При загрузке со спасательной дискеты полезен ключ —root путь, который определяет корень файловой системы для удаляемых пакетов (в т.ч. выполняется chroot() при запуске пред- и пост- скриптов) и базы данных пакетов.
Вместо имени файла можно указывать URL (в этом случае используются также ключи: —ftpproxy, —ftpport, —httpproxy, —httpport). Если указано имя пользователя, но опущен пароль, то он запрашивается интерактивно(это позволяет не светить пароль в командной строке и на экране).
Фактически сначала устанавливается новая версия пакета, затем удаляется старая версия. Оба процесса описаны выше. Только конфигурационные файлы обрабатываются в зависимости от совпадения старого, текущего и нового содержимого (текущий файл может быть переименован с суффиксом .rpmsave, если файл принадлежал старой версии пакета, или с суффиксом .rpmorig, если файл был «самодельным»). Ключи —force, —replacepkgs, —prefix путь, —relocate, —badreloc, —ignoresize, —notriggers, —excludepath путь, —excludedocs, —noorder, —replacefiles, —noscripts (действует только на установку!), —test, -vv, —nodeps, —root путь также работают как описано выше.
Если предыдущая версия пакета не была установлена, то происходит обычная установка пакета при использовании ключа -U или пропуск пакета при использовании ключа -F.
Ключ —oldpackage позволяет вернуться к предыдущей версии пакета.
Ключи -vv, —root путь, —dbpath путь работают как описано выше.
Строка форматирования (рекомендуется заключать в апострофы) может содержать литеральный текст (в т.ч. escape-последовательности \a, \b, \f, \n, \r, \t, \v, \\), тэги и итераторы.
Если для пакета отсутствует определенный тэг, то вместо него будет выведена строка (none) или (unknown).
Некоторые тэги (например, FILENAMES) могут определять множество данных. Такие многозначные тэги д.б. заключены внутри итераторов. Итератор обозначается квадратными скобками. Чтобы поместить однозначный тэг внутри итератора, его имя предваряется знаком равенства. Число элементов в множестве можно вывести с помощью:
%<#имя_тэга>
Немного 😉 более сложный скрипт make-file-list.sh, который позволяет отсортировать файлы установленных пакетов по типам (dir, file, link, pipe, rdev) и «нетронутости» (normal, nonexist, неправильный mtime, несовпадающая md5, неверные права доступа). Создается дополнительный список директорий, не упомянутых явно в БД пакетов. Используется дополнительная программа fileinfo.c.
Скрипт whowhat.sh для получения списка зависимостей между установленными пакетами.
Скрипт unrequired.sh для получения списка установленных пакетов, от которых не зависит ни один другой пакет (особенно умиляет наличие в этом списке пакета bdflush, и ведь удалится без предупреждения!). Используется whowhat.sh и /usr/local/bin/count.awk.
Верификация (ключ -V) включает проверку зависимости пакета от возможностей, предоставляемых другими пакетами (отключается ключом —nodeps); выполнение верификационных скриптов, предоставляемых разработчиком пакета (отключается ключом —noscripts); проверку наличия всех файлов и их корректное состояние (отключается ключом —nofiles). Неинсталлированные (например, по ключу —excludedocs) файлы не проверяются. Требуется неповрежденная БД установленных пакетов.
Ключом —nomd5 отключается проверка MD5.
Ключи -vv, —root путь, —dbpath путь работают как обычно.
В spec-файле можно использовать значения тэгов и пользовательских макросов в виде: %<имя>, а также значения директив rpmrc в виде %<_имя>. Значения макросам присваиваются командой:
%define имя значение
Не надо вставлять вызов rpm в скрипты spec-файла.
Не надо проверять работоспособность пакета на том же компьютере, на котором вы его собирали: программа была установлена на него в процессе сборки.
Использование вместо ключа -b ключа -t заставляет rpm извлекать spec-файл из tar-архива (возможно сжатого).
Везде где в данном тексте упоминался файл rpmrc, надо смотреть (или править) файлы
/.rpmrc (наибольший приоритет), /etc/rpmrc или /usr/lib/rpm/rpmrc (наименьший приоритет). Каждый из этих файлов содержит директивы управления программами из пакета rpm.
Переназначить конфигурационный файл при вызове rpm можно ключом —rcfile путь.
Макросы определяются в файлах /usr/lib/rpm/macros, /etc/rpm/macros и
/.rpmmacros. Также могут определяться «на ходу» ключом —define «имя значение« (имя без процента). Посмотреть значение макроса можно ключом —eval ‘%<имя‘>. Есть рекурсия подстановки, условная подстановка.
Пакет rpm-devel включает библиотеку для работы с пакетами и БД пакетов, include-файлы и документацию (8MB, сгенеренных неестественным интеллектом, так что не ожидайте от нее слишком много).
Как установить пакеты RPM на CentOS
RPM — это система упаковки, используемая Red Hat и ее производными, такими как CentOS и Fedora.
Но не все поставщики программного обеспечения предоставляют репозиторий yum для своих приложений. Чаще всего в таких ситуациях у них будет страница загрузки, откуда вы можете загрузить и установить пакет RPM или загрузить и скомпилировать программное обеспечение из источников.
В этом руководстве мы покажем вам два метода установки пакетов RPM на CentOS.
Подготовка
Вам следует избегать использования этого метода для замены или обновления важных системных пакетов, таких как glibc, systemd или других служб и библиотек, которые необходимы для правильного функционирования вашей системы. Это может привести к ошибкам и нестабильности системы.
Установка пакетов RPM с помощью yum
yum — это инструмент менеджера пакетов по умолчанию в CentOS. Он используется для установки, удаления, загрузки, запроса и обновления пакетов из официальных репозиториев CentOS, а также других сторонних репозиториев.
Первым шагом является загрузка файла RPM, который вы хотите установить:
Чтобы установить пакет, используйте команду yum localinstall пути к имени пакета:
yum запросит подтверждение. Ответьте y и пакет RPM будет установлен при условии, что он совместим с вашей системой и соблюдены все зависимости.
Если пакет RPM зависит от других пакетов, которые в данный момент не установлены, и если эти пакеты доступны в репозиториях, включенных в вашей системе, yum установит все зависимости. В противном случае yum напечатает список всех недостающих зависимостей, которые вам нужно будет загрузить и установить вручную.
Вместо загрузки и последующей установки пакета RPM вы можете просто передать URL-адрес пакета RPM команде yum localinstall :
Чтобы обновить пакет RPM, который уже установлен с помощью yum, используйте ту же процедуру, что и при установке пакета.
Если по какой-то причине вы хотите удалить установленный пакет, используйте стандартную команду yum remove за которой следует имя пакета:
Установка пакетов RPM с помощью rpm
rpm — это инструмент низкого уровня, который используется для установки, удаления, обновления, запроса и проверки пакетов RPM.
Если пакет зависит от других пакетов, которые не установлены в системе, rpm отобразит список всех недостающих зависимостей. Вам придется скачать и установить все зависимости вручную.
Вместо загрузки и установки пакета RPM вы можете использовать URL-адрес пакета RPM в качестве аргумента:
Выводы
В этом руководстве мы показали вам, как устанавливать пакеты RPM в CentOS.
Вы должны предпочесть использовать yum rpm поскольку он автоматически разрешает все зависимости за вас.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.