Linux 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, выполните следующую команду:
Выводы
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Установка программного обеспечения - очень важный момент в работе с операционной системой. Сейчас есть две самые распространенные системы установки программного обеспечения. Это используемая в Debian и всех ее производных, в том числе и в Ubuntu - deb, а также разработанная в RedHat и используемая в Red Hat и всех основанных на ней дистрибутивов - rpm.
Обе системы и deb и rpm полнофункциональные, легкие в использовании и имеют очень большое количество программного обеспечения. Многих пользователей интересует в чем разница между этими двумя системами. Но в интернете мы находим только общие сведения вроде того что уже выше написано. В этой статье мы попытаемся разобраться что лучше deb или rpm. Также попытаемся вникнуть в суть их различий.
Основы
С точки зрения пользователя, эти два варианта установки пакетов не имеют очень больших различий. Оба файла и Deb и Rpm - это всего лишь архивы, созданные с помощью утилиты ar. Эти архивы включают в себя файлы программ, исполняемые файлы, библиотеки, или файлы конфигурации. Кроме этого, в каждый пакет входят метаданные системы управления пакетами, именно этим и отличаются rpm и deb. Собственно файлы пакетов отличаются в основном только этим, но еще есть система управления пакетами. А там уже различий в базе данных намного больше.
Давайте рассмотрим каждую систему управления пакетами подробнее, а затем сравним что же в них особенного, и что лучше rpm или deb.
RPM (Red Hat Package Manager)
Как мы уже говорили, RPM - это менеджер пакетов, используемый в операционных системах, основанных на Red Hat, это вся ветка дистрибутивов: Fedora, OpenSUSE, Red Hat, CentOS и т д. Изначально этот пакетный менеджер был разработан в компании Red Hat еще в 1997 году и только для их дистрибутива, но затем он распространился и в другие операционные системы. Вместо обычного сжатия здесь используется сжатие gzip по алгоритму cpio и особый формат файла архива, его мы рассмотрим ниже. Здесь в сравнении rpm или deb, первый кажется лучше, но не все так просто, если в системе нет нужных утилит, то вы не сможете распаковать такой пакет. Кроме cpio могут использоваться и другие алгоритмы сжатия, например, lzma или xz. В последнее время все программное обеспечение подписывается ключами для удостоверения подлинности, вот и RPM поддерживает подпись с помощью GPG и MD5. Технология PatchRPMs или DeltaRPMs позволяет грамотно обновлять RPM пакеты без больших затрат трафика.
Хоть и сказано, что файл rpm - это обычный архив, это не совсем так. Вначале файла находится заголовок, который идентифицирует файл как rpm архив, затем идет подпись, для проверки целостности и подлинности файла. Дальше идет заголовок, в котором содержаться данные о самом пакете, версия, архитектура, список файлов и т д. И только после всего этого идет сам архив с файлами пакета.
Для работы с RPM могут использоваться несколько различных пакетных менеджеров, это универсальная утилита rpm, пакетный менеджер zypper в OpenSUSE, dnf в Fedora, urpmi в Mageia, yum - во многих дистрибутивах, основанных на Fedora.
Рассмотрим основные особенности RPM:
- Автоматическое разрешение зависимостей в большинстве случаев корректно
- Файл архива имеет специальный формат
- Не поддерживается реализация зависимостей с выбором завистимости от пакет1 или пакет2.
- Не поддерживаются рекомендованные пакеты
- Позволяет настроить зависимость от файла, а не пакета
- Все данные об установленных пакетах хранятся в базе данных поэтому при надобности можно проверить контрольные суммы
- Поддерживаются сценарии как до, так и после установки программ
- Поддерживается формат SRPM, который содержит в себе исходники программы все патчи с инструкции по сборке, позволяющие собрать программу из исходников на локальной машине.
- Отличная поддержка Multilib пакетов
Deb (Debian Package Manager)
Файлы deb - это архивы, созданные с помощью утилиты ar. Они могут быть сжаты с помощью GZIP, Bzip2, lzma, или XZ. Чаще всего для управления пакетами deb в терминале используется утилита dpkg, Но могут и другие, например, gdebi, apt, aptitude и т д. Deb пакеты используются для установки программного обеспечения во многих операционных системах, основанных на Debian, это ветка Ubuntu со многими основанными на ней дистрибутивами и так далее. Поскольку Ubuntu в последнее время набирает популярность среди новичков, то пакетов для нее становится больше.
Из особенностей системы управления пакетами DEB можно назвать использование приоритетов для классификации пакетов по важности, а также поддержку рекомендованных пакетов. Это пакеты, которые не находятся в зависимостях программы, но желательны для установки вместе с ней. Рекомендованные утилиты устанавливаются автоматически в таком инструменте, как apt. Чтобы сравнить rpm vs deb рассмотрим особенности deb:
- Файл пакета - обычный архив
- Поддержка приоритетов для пакетов различной важности
- Поддержка рекомендованных пакетов
- Не поддерживаются файловые зависимости
- Не поддерживается технология Delta для экономии трафика
Аналоги команд
Давайте рассмотрим аналоги команд для выполнения одних и тех же действий в этих системах управления пакетами с помощью утилит rpm и dpkg:
Как уже отмечалось, весь Linux состоит из пакетов. В RedHat работу с пакетами выполняет программа rpm (RedHat Package Manager), а сами файлы, содержащие пакеты, имеют расширение .rpm . Кроме RedHat существует еще несколько дистрибутивов Linux, использующих rpm ; самые известные -- Caldera, SuSE и KSI. Их так и называют -- rpm-системы.
Сразу после установки системы зачастую возникает необходимость доставить некоторые пакеты, забытые при инсталляции, или убрать лишние.
У файлов, содержащих пакеты, всегда перед расширенем .rpm есть еще одно, обозначающее архитектуру, для которой предназначен этот пакет.
Некоторые расширения .rpm-файлов
Расширение | Назначение |
---|---|
.i386.rpm | Пакет для Linux/Intel |
.src.rpm | Исходный код пакета (никогда не устанавливайте .src.rpm -- потом не удалите!) |
.alpha.rpm | Пакет для Linux/Alpha |
.sparc.rpm | Пакет для Linux/Sparc (Sun) |
.ppc.rpm | Пакет для Linux/PowerPC |
.noarch.rpm | Пакет для всех архитектур (обычно содержит данные -- файлы конфигурации, шрифты и т.д.) |
Кроме того, само имя пакета состоит из собственно названия и версии. Например, lynx-2.8.2-3.i386.rpm -- программа lynx , версия 2.8.2, build 3. К сожалению, формальных правил, позволяющих понять, где кончается имя и начинается версия, нет.
Файлы пакетов обычно расположены в одном из трех мест -- в дистрибутиве, в разделе дополнений (updates) или в резделе "пожертвований" (contrib). В ИЯФ для RedHat 5.2/Intel это соответственно
Пакеты с исходными кодами всегда лежат в директориях SRPMS/ , и содержат исходный код для всех архитектур.
Использование rpm
Хотя rpm выполняет все функции работы с пакетами (включая создание .i386.rpm из .src.rpm), сейчас рассмотрим лишь основные действия.
Установка. Для установки пакета используется команда rpm -i (Install), которой указывается полное имя файла, содержащего пакет. Пример:
Если требуется установить несколько пакетов, то можно указать их все в одной команде (через пробелы). Иногда это нужно -- например, при обновлении программы, состоящей из нескольких пакетов (например, Netscape), чтобы rpm не выдавал ошибок из-за зависимостей пакетов.
Удаление. Для удаления установленного пакета используется команда rpm -e (Erase). Ей указывается имя пакета (можно без версии), и без суффикса ".i386.rpm" . Пример:
При удалении нескольких пакетов их также стоит указать все вместе в одной команде, чтобы rpm не "ругался" на удаление пакета, от которого зависит другой пакет.
Информация. Чтобы узнать, установлен ли некий пакет, служит команда rpm -q (Query). Ей также указывается имя пакета, а она выдает его полное имя, если он установлен. Примеры:
Маленькие и заглавные буквы в именах пакетов различаются. Поскольку часто не помнишь точное имя пакета (и уж тем более, какие буквы там на каком регистре), можно воспользоваться командой rpm -qa (Query All packages -- показать все пакеты) в сочетании с командой grep :
Как уже упоминалось в разделе "Добавление и удаление пакетов", rpm (Redhat Package Manager) служит для работы с пакетами -- установка, удаление, проверка и т.д.
При установке пакета rpm записывает информацию о нем в свою базу данных, что и позволяет в дальнейшем удалять пакет, просматривать информацию о нем и т.д.
- Унифицированная работа с разными пакетами (в частности, не надо помнить, куда какая-либо программа положила при инсталляции свои файлы -- постоянная головная боль в Dos/Windows).
- Отслеживание зависимостей между пакетами выполняется автоматически (не надо помнить, что программа такая-то требует некоей библиотеки с версией не ниже какой-то -- сравните с вечными проблемами, к примеру, с DirectX в Windows).
- Непротиворечивость между разными пакетами -- в частности, корректно "разводится" ситуация, когда несколько пакетов содержат один и тот же файл (например, в /etc/).
Режимы работы rpm
Если вызвать rpm без параметров, то он покажет "краткий" список ключей. Обычно же формат вызова rpm такой:
КлючРежима, указываемый первым, определяет режим работы. Самые частоиспользуемые режимы перечислены в таблице.
Установку, обновление и удаление пакетов мы рассмотрели ранее, поэтому сейчас остановимся лишь на общих параметрах, получении информации и проверке.
Ключи и параметры, общие для разных режимов
В аргументах обычно используется два варианта ссылок на пакеты.
Имя-файла-пакета.rpm для режимов -i и -U -- это полное (с директорией) имя файла. Например,
/RPMS/apache-1.3.3-1.i386.rpm . В принципе, rpm понимает имена файлов в виде ftp-URL, т.е. ftp://сервер/директория/файл.rpm , но ими имеет смысл пользоваться только в быстрой и надежной сети (в нашей стране -- в локальной). Впрочем, в локальной сети (и любой быстрой) удобнее пользоваться NFS-сервером, если он есть.
Пакет -- это имя уже установленного пакета для режимов -e, -q и -y. Оно может указываться как с номером версии, так и без него. Примеры: acroread-3.01-4 , acroread . Если вместо списка пакетов указать ключ " -a " ( a ll), то это будет означать "все пакеты". Кроме того, ключ " -f " позволяет вместо имени пакета указать какой-либо файл, принадлежащий этому пакету (см. ниже).
Можно указывать не один файл-пакета или пакет, а сразу несколько, разделяя их пробелами.
Получение информации
- Версию пакета.
- Список файлов.
- Чего требует пакет.
- Можно узнать, какому пакету принадлежит указанный файл.
Просто " rpm -q имя-пакета " выдает полное название пакета, вместе с версией:
Но чаще всего команда " rpm -q " используется для получения списка файлов пакета.
Краткая информация о пакете -- rpm -qi
Команда " rpm -qi " ( i nfo) выдает сводку информации о пакете -- название, версия, объем и т.д., плюс краткую аннотацию:
Список файлов пакета -- rpm -ql
Для получения списка файлов используется ключ " -l " ( l ist):
Поскольку некоторые пакеты содержат очень большое количество файлов, то стоит отправлять вывод от rpm -ql команде less :
Для получения "полной" информации о пакете (аннотации и списка файлов) можно указать ключи " -i " и " -l " одновременно:
Какому пакету принадлежит файл
Часто возникает необходимость узнать, какому пакету принадлежит какой-то файл (например, чтобы знать, где искать к нему документацию). Для этого можно воспользоваться ключом " -f " ( f ile):
При этом надо указывать полное имя файла -- с директорией. Кроме того, если к файлу есть "несколько путей" (из-за символьных линков на директории), то следует указывать "основной" (обычно тот, который без символьных линков), иначе rpm не сможет дать ответ:
Вообще-то действие ключа " -f " не ограничивается простым запросом "скажи кому принадлежит файл". Этот ключ позволяет другим способом сослаться на пакет, т.е. вместо имени пакета указать один из принадлежащих ему файлов. Так, команды
А как там назывался пакет.
Иногда возникает такая ситуация: примерно помнишь, как назывался некий пакет, но только примерно (а мало ли где в имени были заглавные буквы, где маленькие, где дефисы. ). В этой ситуации можно заставить rpm выдать список всех пакетов (ключ " -a ") и найти нужное при помощи grep . Пример ("как назывались пакеты, содержащие netscape?"):
Другой пример ("к чему там относится afterstep?"):
Где же был этот файл.
Аналогично иногда возникает необходимость найти некий файл, имя которого помнишь весьма приблизительно, а уж в какой он лежит директории.
Вместо того, чтобы делать поиск по всему диску (что очень долго), можно заставить rpm выдать список файлов всех пакетов (ключ " -al ") и отфильтровать нужное при помощи grep . Пример ("где там был файл с параметрами разных мониторов?"):
Искомый файл в данном примере -- второй.
Информация о неинсталлированном пакете
Перед установкой нового пакета обычно имеет смысл посмотреть информацию о нем и/или список содержащихся в нем файлов.
Чего требует пакет -- rpm -qR
Ключ " -R " ( R equirements) позволяет узнать, какие пакеты и библиотеки требуются пакету. Особенно часто это требуется перед установкой пакета. Пример:
В вышеприведенном примере видно, что данный пакет установить не удастся, как минимум потому, что установленная версия пакета gtk+ слишком старая.
Проверка
Команда rpm -y пакет позволяет сравнить текущее состояние файлов пакета с информацией, записанной в базе данных. Это требуется, например, при проверке, не испорчены ли какие-нибудь важные для системы файлы (такое случается после внезапного отключения питания).
При нахождении различий печатается ключевая строка, с обозначением отличий и имя файла, в котором они найдены.
Сравниваются следующие параметры: 5 Контрольная сумма (подсчитанная по алгоритму MD5) S Размер файла L Куда указывает символьный линк (если проверяемый файл является симлинком) T Время модификации D Устройство (раздел), на котором расположен файл U Владелец G Группа-владелец M Права доступа
Проверку лучше выполнять как " root ", так как некоторые файлы (например, /usr/X11R6/bin/xterm ) могут быть недоступны на чтение другим пользователям и для них всегда будет выдаваться несовпадение по контрольной сумме.
Как видно из этого примера, в некоторых файлах обязательно будут отличия, поскольку тот же /etc/passwd изменяется при создании и изменении пользователей.
Аналогично команде rpm -q , rpm -y можно вместо имени пакета указывать " -f файл " или " -a ".
Команда rpm -ya полезна для проверки всей системы, но ее исполнение занимает много времени.
| Иногда в документации вместо " -y " указывается " -V " ( V erify) -- эти два ключа эквивалентны. |
Где еще брать информацию про rpm
Основные сведения содержатся в man-странице по rpm. Кроме того, с системой поставляется "HOWTO" документация --
Самое лучшее справочное пособие по rpm -- книга Ed Bailey "Maximum RPM" . Она есть в электронном виде на сайте rpm :
Читайте также: