Удалить rpm пакет linux

Обновлено: 04.07.2024

RPM имеет пять основных режимов работы (не считая создания пакета): установка, удаление, обновление, анализ и проверка. Этот раздел содержит описание каждого режима. Чтобы получить полное описание всех подробностей и параметров, попробуйте выполнить rpm --help или обратиться к разделу 15.5 Дополнительные ресурсы .

Прежде чем воспользоваться пакетами RPM, вы должны знать, где их найти. Поисковые машины в Интернете знают о множество хранилищ RPM, но если вы ищете пакеты RPM, созданные компанией Red Hat, обратитесь к следующим источникам:

Компакт-диски Red Hat Enterprise Linux

Сеть Red Hat Network — Подробнее о ней вы узнаете в главе 17 Red Hat Network

Обычно файлы, содержащие пакеты RPM, имеют имена вроде foo-1.0-1.i386.rpm . Имя файла включает название пакета ( foo ), версию ( 1.0 ), выпуск ( 1 ) и архитектуру ( i386 ). Чтобы установить пакет, войдите в систему под именем root и введите в приглашении оболочки следующую команду:

rpm -Uvh foo-1.0-1.i386.rpm

Если установка пройдёт успешно, на экране появится следующее:

Как вы видите, RPM выводит имя пакета, а затем, по мере установки пакета, последовательность символов «решётка», отражающую процесс установки.

За дополнительными сведениями о проверке подписи пакета обратитесь к разделу 15.3 Проверка подписи пакета .

Предупреждение

Если вы устанавливаете пакет ядра, вместо этой команды следует использовать rpm -ivh . За подробностями обратитесь к главе 37 Обновление ядра вручную .

Установка пакетов должна выполняться просто, но иногда вы можете встретить ошибки:

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

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

rpm -ivh --replacepkgs foo-1.0-1.i386.rpm

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

Чтобы RPM игнорировал эту ошибку, укажите параметр --replacefiles :

rpm -ivh --replacefiles foo-1.0-1.i386.rpm

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

error: Failed dependencies: bar.so.2 is needed by foo-1.0-1 Suggested resolutions: bar-2.0.20-3.i386.rpm

Если вы устанавливаете пакет с набора компакт-дисков Red Hat Enterprise Linux CD-ROM, обычно вам предлагается название пакета, необходимого для разрешения зависимости. Найдите предлагаемый пакет(ы) на компакт-дисках Red Hat Enterprise Linux или на FTP-сайте Red Hat (или зеркале) и добавьте его в команду:

rpm -ivh foo-1.0-1.i386.rpm bar-2.0.20-3.i386.rpm

Если установка обоих пакетов прходит успешно, на экран выводится примерно следующее:

Если система не предлагает пакет для разрешения зависимости, вы можете попробовать параметр --redhatprovides , чтобы определить, какой пакет содержит требуемый файл. Для использования этого параметра вам потребуется установить пакет rpmdb-redhat .

rpm -q --redhatprovides bar.so.2

Если пакет, содержащий bar.so.2 , есть в установленной базе данных из пакета rpmdb-redhat , вы увидите название этого пакета:

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

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

Обратите внимание, здесь используется имя пакета foo , а не имя файла оригинального пакета foo-1.0-1.i386.rpm . Чтобы удалить пакет, замените foo действительным именем первоначального пакета.

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

error: Failed dependencies: foo is needed by (installed) bar-2.0.20-3.i386.rpm

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

Обновление пакета похоже на его установку. Введите в приглашении оболочки следующую команду:

rpm -Uvh foo-2.0-1.i386.rpm

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

Не стоит использовать параметр -U для установки пакетов ядра, так как при этом RPM заменит предыдущий пакет ядра. Это не влияет на работающую систему, но если после следующей перезагрузки запустить новое ядро не удастся, никакого другого ядра для загрузки вместо него не будет.

Параметр -i добавляет ядро в меню загрузчика GRUB ( /etc/grub.conf ). Подобным образом, при удалении старого, ненужного ядра, запись этого ядра удаляется из GRUB.

saving /etc/foo.conf as /etc/foo.conf.rpmsave

Обновление в самом деле представляет собой комбинацию удаления и установки, поэтому во время обновления RPM вы можете встретить ошибки и удаления, и установки, плюс ещё одну. Если RPM считает, что вы пытаетесь обновить пакет с более старой версией, он сообщает примерно следующее:

package foo-2.0-1 (which is newer than foo-1.0-1) is already installed

Чтобы, несмотря на это, принудительно обновить пакет, укажите параметр --oldpackage :

rpm -Uvh --oldpackage foo-1.0-1.i386.rpm

Освежение пакета похоже на его обновление. Введите в приглашении оболочки следующую команду:

rpm -Fvh foo-1.2-1.i386.rpm

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

RPM может выполнить эту операцию как для одного пакета, так и для групп пакетов. Если вы только что загрузили много разнообразных пакетов и хотите обновить только установленные в системе, «освежение» пакетов — именно то, что вам нужно. Если вы освежаете пакеты, перед использованием RPM вы можете не удалять ненужные пакеты из загруженной группы пакетов.

В этом случае выполните следующую команду:

RPM автоматически обновит только уже установленные пакеты.

Чтобы обратиться к базе данных установленных пакетов, используйте команду rpm -q . Команда rpm -q foo выводит название пакета, версию и номер выпуска установленного пакета foo :

Чтобы запросить информацию о пакете, замените foo действительным именем пакета.

Вместо указания имени пакета используйте следующие параметры команды -q для указания запрашиваемого пакета (ов). Эти параметры называются Параметрами выбора пакета .

-a запрашивает все установленные пакеты.

-f <file> запрашивает пакет, к которому относится файл <file> . Указывая файл, вы должны определить полный путь к файлу (например, /bin/ls ).

-p <packagefile> запрашивает пакет <packagefile> .

Указать параметры запроса можно разными способами. Следующие параметры определяют тип искомой информации. Они называются Параметрами запроса информации .

-i отображает информацию о пакете, включая имя, описание, выпуск, размер, дату сборки, дату установки, производителя и другую разнообразную информацию.

-l выводит список файлов, содержащихся в пакете.

-s выводит состояние всех файлов в пакете.

-d выводит список файлов, помеченных как документация (страницы man, info, файлы README, и т.д.).

-c выводит список файлов, помеченных как файлы конфигурации. Таковыми считаются файлы, изменяемые вами после установки при настройке пакета в вашей системе (например, sendmail.cf , passwd , inittab и т.д.).

Добавьте для параметров, выводящих списки файлов, команду -v и вы получите списки в знакомом формате ls -l .

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

Проверку пакета выполняет команда rpm -V . Вы можете указать пакет, который хотите проверить, используя любой из перечисленных параметров выбора пакета . Простым примером проверки является команда rpm -V foo , которая проверяет, что все файлы пакета foo находятся там, куда они были изначально установлены. Например:

Чтобы проверить пакет, содержащий конкретный файл, выполните:

rpm -Vf /usr/bin/vim

Чтобы проверить ВСЕ установленные пакеты:

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

rpm -Vp foo-1.0-1.i386.rpm

Эта команда может быть полезна, если вы сомневаетесь в целостности баз данных RPM.

5 — контрольная сумма MD5

L — символическая ссылка

T — дата изменения файла

M — режим (включая разрешения и тип файла)

? — файл не удалось прочитать

Команда rpm хороша не только для установки ПО. Правильное удаление пакетов настолько же частая операция, нуждающаяся в автоматизации.

Для удаления пакетов используется опция -e. Основной синтаксис следующий:

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

Для выполнения этих и других подобных действий необходимы права суперпользователя.

Команда удаления, так же как и команды установки, поддерживает опцию --test. Если от пакета зависит большое число установленного ПО, можно проверить, какие приложения и библиотеки утратят свою работоспособность:

error: Failed dependencies:

3.3.1 Был ли удален пакет?

Используя режим запросов, можно проверить, был ли пакет уже установлен. Но также можно проверить, был ли пакет удален. Например:

package jikes is not installed

3.3.2 Удаление списка пакетов одной командой

Можно удалить группу пакетов, сформировав список в командной строке:

3.3.3 Опции, применимые для команд удаления

Опция --nodeps позволяет удалить пакет даже в том случае, если в системе все еще есть зависящие от него пакеты. Использование этой и ей подобных опций может разрушить систему.

Опция --repackage позволит собрать удаляемые пакеты в rpm-пакет, который появится в директории для таких пакетов. По умолчанию это /var/spool/repackage. Пакет, построенный с помощью опции --repackage не является полноценным пакетом и его нельзя установить.

Подобно режиму установки для удаления можно использовать опции --noscripts и --notriggers. Помимо --noscripts также можно применить --nopreun и --nopostun. Соответственно, --nopreun отменяет выполнение скриптов перед удалением пакета, а --nopostun - скриптов, которые должны были отработать после удаления. Также сходным образом применяется опция --notriggers, или раздельно --notriggerun или --notriggerpostun.

В этом руководстве мы поговорим о том, как использовать команду 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, выполните следующую команду:

Выводы

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

Как уже отмечалось, весь 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 :

Читайте также: