Rpm как удалить пакет
Перейти к содержимому

Rpm как удалить пакет

  • автор:

Rpm как удалить пакет

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

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

# rpm e xcopilot

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

# rpm e jikes-1.16-1

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

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

error: Failed dependencies:

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

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

# rpm -e jikes-1.16-1

package jikes is not installed

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

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

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

Опция —allmatches заставит rpm удалить все пакеты, имена которых содержат шаблон, заданный администратором в командной строке. Если более, чем один пакет соответствует шаблону, а опция не указана, работа будет завершена с сообщением об ошибке удаления.

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

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

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

Управление пакетами в RHEL — rpm

Для установки, удаления и обновления программ в дистрибутивах RHEL, Fedora, Mandriva, AltLinux и некоторых других используется менеджер пакетов rpm. Менеджер пакетов rpm позволяет устанавливать, удалять, верифицировать пакеты соответствующего формата, но не имеет средств для автоматического разрешения зависимостей и поиска в репозиториях. Для автоматизации установки пакетов можно воспользоваться программой yum (Yellowdog Update Manager), которая автоматически разрешает зависимости между пакетами и подгружает необходимые файлы. При необходимости собрать пакет с программой из исходных текстов можно воспользоваться rpmbuild. Для этого необходимо подготовить пакет в формате .src.rpm, включающий исходные тексты программы и .spec файл, описывающий процесс сборки.

Структура пакета

Пакеты именуются по следующей схеме: имя-версия-сборка . Распространяются пакеты в виде файлов, в название которых добавляется .архитектура.rpm . Например, squid-2.5.STABLE8–1.FC3.1.i386.rpm расшифровывается так: программа squid , версия 2.5.STABLE8 , сборка 1.FC3.1 , архитектура i386 (неоптимизированное приложение под i386 совместимые процессоры). Номер сборки может включать название дистрибутива (FC3 в данном случае, а может и не включать). Архитектура noarch означает скрипты, независимые от архитектуры процессора. Файлы .src.rpm содержат исходные тексты программ и устанавливаются особым образом.

Каждый пакет содержит файлы программ, библиотек, конфигурации, документации и пр., упакованные архиватором cpio . Также пакет содержит дополнительные секции:

  • PROVIDE – предоставляемая функциональность (например, “mail server”) плюс файлы пакета;
  • REQUIRENAME – необходимые для корректной работы пакеты, файлы и т.п. (то, что требуется в REQUIRENAME, должно присутствовать в PROVIDE ранее установленных пакетов);
  • OBSOLETES – список пакетов, которые могут быть удалены т.к. их функциональность и/или файлы заменяютя данным пакетом;
  • PREIN, POSTIN – скрипты, выполняемые до установки (например, остановка обновляемого демона), и скрипты, выполняемые после установки (например, правка конфигурационных файлов под конкретную машину);
  • PREUN, POSTUN – скрипты, выполняемые при удалении;
  • SUMMARY – краткое описание пакета;
  • DESCRIPTION – подробное описание.

Кроме того, каждый пакет принадлежит к некоторой группе Интернет, Разработка Программ, Развлечения и т.п. Просмотреть секции rpm файла можно в mc.

В дальнейших описаниях означает имя пакета без i386.rpm (если установлена одна версия программы, то номер версии и сборки тоже можно опустить), а означает имя файла .rpm. В качестве файла можно указывать его URL, например, http://download.fedora.redhat.com/pub/fedora/linux/core/updates/3/i386/yum-2.2.0-0.fc3.noarch.rpm

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

Вспомогательные опции: -v – подробный вывод сообщений, -h – показ индикатора прогресса установки.

rpm -ivh . – установить пакет(ы)
rpm -Uvh . – обновить пакет(ы), если не установлены – установить
rpm -Fvh . – обновить уже установленный(е) пакет(ы)
rpm -e . – удалить пакет(ы)

Просмотр информации об установленных пакетах или файлах rpm

Вспомогательные опции: -a – все установленные пакеты, -p – информация о файле rpm (в примерах будут приведены не везде).

rpm -q . – проверка на наличие установленного пакета и его версии
rpm -qa — список всех пакетов
rpm -qi . – DESCRIPTION пакета
rpm -qip . – DESCRIPTION файла
rpm -qR . – REQUIERS пакета
rpm -ql . – список файлов пакета
rpm -qf . – определение принадлежности произвольного файла к одному из установленных пакетов

Проверка целостности rpm пакета

Файлы, размещенные в rpm пакете, сопровождаются вычисленной контрольной суммой и, как правило, подписаны цифровой подписью сборщика пакета. После установки пакета контрольные суммы и подписи сохраняются в базе установленных пакетов. Эти вспомогательные данные позволяют выполнить несколько проверок, например, можно проверить, что пакет создан доверенным издателем и что файлы пакета не были подменены после установки.

Первая проверка очень важна при скачивании пакетов из интернета, а вторая при подозрении на взлом компьютера.

Публичные ключи для проверки подписи автоматически устанавливаются при установке из дистрибутива, а также полуавтоматически добавляются при установке rpm пакетов для подключения репозиториев yum . Файлы с ключами в CentOS устанавливаются в каталог /etc/pki/rpm-gpg/ . Можно добавить ключ вручную, указав путь к локальному файлу или его url. Файл с ключем должен иметь текстовый формат ‘ASCII armored’

 rpm --import PUBKEY-file 

После инсталляции к ключам применимы те же команды, что и к установленным пакетам

rpm -qa gpg-pubkey* – список всех ключей
rpm -qi gpg-pubkey-db42a60e – информация (в том числе имя хозяина) о конкретном ключе
rpm -e gpg-pubkey-db42a60e – удаление ключа

Проверка файла пакета на целостность

rpm --checksig

Проверка установленного пакета на целостность

rpm --verify

После выполнения этой команды будет выдан список изменившихся файлов с указанием, что именно в них поменялось. Информация о типе изменений состоит из строки аббревиатур, включающих:

  • S – размер (Size)
  • M – тип файла или права доступа (Mode)
  • 5 – контрольная сумма (MD5)
  • D – мажор или минор устройства устройства (Device)
  • L – содержимое символической ссылки (Link)
  • U – владелец (User)
  • G – группа (Group)
  • T – время модификации (mTime)
  • P – капабилити (caPabilities)

Извлечение и упаковка файлов rpm пакета

Программа rpm2cpio извлекает файлы из RPM пакета в формате архива cpio . Для распаковки файлов вместе со структурой каталогов используется команда cpio с опциями -i – распаковать и -d – создать каталоги:

rpm2cpio | cpio -i -d

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

Особые случаи

Eсли пакет уже установлен и его надо переустановить или необходимо понизить версию пакета, то можно к командам инсталяции или обновления добавить опцию —force .

Если установка или удаление пакета формально нарушает зависимости, но известно, что все будет хорошо, то используется опция —nodeps .

Rpm как удалить пакет

В RPM используются пять основных действий (не считая создания пакета): установка, удаление, обновление, анализ и проверка. В этом разделе содержится обзор каждого действия. Подробное описание и список параметров, вы можете найти, выполнив rpm —help , а в разделе Дополнительные ресурсы вы найдёте источники дополнительной информации о RPM .

Поиск пакетов RPM

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

Компакт-диски с официальным Red Hat Linux

Страница обновлений Red Hat, расположенная по адресу http://www.redhat.com/support/errata .

Список зеркал FTP сервера Red Hat, опубликованный по адресу http://www.redhat.com/mirrors.html

Red Hat Network — Обратитесь к Главе 27 за описанием Red Hat Network

Установка

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

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

Замечание

Хотя чаще используется команда rpm -ivh foo-1.0-1.i386.rpm установки RPM пакета, вы можете также воспользоваться командой rpm -Uvh foo-1.0-1.i386.rpm . Параметр -U чаще используется при обновлении пакета, но он также работает и при установке новых пакетов. Обратитесь к разделу Обновление за дополнительной информацией об использовании параметра -U системы RPM .

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

Пакет уже установлен

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

# rpm -ivh foo-1.0-1.i386.rpm foo package foo-1.0-1 is already installed #

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

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

Конфликтующие файлы

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

# rpm -ivh foo-1.0-1.i386.rpm foo /usr/bin/foo conflicts with file from bar-1.0-1 #

Чтобы система RPM игнорировала эту ошибку, используйте параметр —replacefiles :

Нарушенная зависимость

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

# rpm -ivh foo-1.0-1.i386.rpm failed dependencies: bar is needed by foo-1.0-1 #

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

Удаление

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

Замечание

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

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

# rpm -e foo removing these packages would break dependencies: foo is needed by bar-1.0-1 #

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

Обновление

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

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

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

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

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

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

# rpm -Uvh foo-1.0-1.i386.rpm foo package foo-2.0-1 (which is newer) is already installed #

Чтобы вынудить RPM всё же выполнить «обновление», воспользуйтесь параметром —oldpackage :

Освежение

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

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

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

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

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

Анализ

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

# rpm -q foo foo-2.0-1 #

Замечание

Обратите внимание, в этом примере используется имя пакета foo . Чтобы запросить пакет, вы должны заменить foo действительным именем пакета.

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

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

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

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

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

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

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

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

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

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

Проверка

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

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

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

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

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

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

Если проверка проходит успешно, никакие сообщения на экране не появятся. В случае обнаружения каких-либо нарушений, вы увидите сообщения об этом. Для каждого несоответствия на экран будет выведена строка из восьми символов ( c обозначает файл конфигурации), а затем имя файла. Каждый из восьми символов обозначает результат сравнения одного атрибута файла со значением атрибута, записанного в базе данных RPM . Одна . (точка) означает, что тест пройден. Следующие символы обозначают ошибки при выполнении определённых проверок:

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

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

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

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

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

Если вы увидели такие сообщения, вы должны решить, будете ли вы удалять или переустанавливать пакет или исправлять проблему другим способом.

Назад Начало Вперед
Управление пакетами с помощью RPM Вверх Проверка подписи пакета

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), которой указывается полное имя файла, содержащего пакет. Пример:

Если пакет уже установлен, rpm откажется его устанавливать. Если же это новая версия (т.е. делается не установка, а обновление), то надо воспользоваться командой rpm -U (Upgrade); фирма RedHat рекомендует «для красоты» использовать форму rpm -Uvh — при этом «прогресс» в установке показывается индикатором из символов » # «. Пример:

bobby:~# rpm -Uvh wu-ftpd-2.4.2b18-2.1.i386.rpm wu-ftpd ################################################## bobby:~# _

Если требуется установить несколько пакетов, то можно указать их все в одной команде (через пробелы). Иногда это нужно — например, при обновлении программы, состоящей из нескольких пакетов (например, Netscape), чтобы rpm не выдавал ошибок из-за зависимостей пакетов.

Удаление. Для удаления установленного пакета используется команда rpm -e (Erase). Ей указывается имя пакета (можно без версии), и без суффикса «.i386.rpm» . Пример:

При удалении нескольких пакетов их также стоит указать все вместе в одной команде, чтобы rpm не «ругался» на удаление пакета, от которого зависит другой пакет.

Информация. Чтобы узнать, установлен ли некий пакет, служит команда rpm -q (Query). Ей также указывается имя пакета, а она выдает его полное имя, если он установлен. Примеры:

bobby:~# rpm -q lynx lynx-2.8.1-5 bobby:~# rpm -q seyon package seyon is not installed bobby:~# _

Маленькие и заглавные буквы в именах пакетов различаются. Поскольку часто не помнишь точное имя пакета (и уж тем более, какие буквы там на каком регистре), можно воспользоваться командой rpm -qa (Query All packages — показать все пакеты) в сочетании с командой grep :

bobby:~# rpm -qa | grep -i after AfterStep-1.5-0.7 AfterStep-APPS-1.5-0.3 bobby:~# _

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *