Команда rpm хороша не только для установки ПО. Правильное удаление пакетов настолько же частая операция, нуждающаяся в автоматизации.
Для удаления пакетов используется опция -e. Основной синтаксис следующий:
# rpm e xcopilot
Используется имя файла без версии и постфиксов. Если установлено несколько версий одноименного пакета, а такое бывает, потребуется указать кандидата на удаление точнее:
# rpm e jikes-1.16-1
Для выполнения этих и других подобных действий необходимы права суперпользователя.
Команда удаления, так же как и команды установки, поддерживает опцию —test. Если от пакета зависит большое число установленного ПО, можно проверить, какие приложения и библиотеки утратят свою работоспособность:
# rpm e —test syslinux
error: Failed dependencies:
syslinux is needed by (installed) mkbootdisk-1.4.8-1
3.3.1 Был ли удален пакет?
Используя режим запросов, можно проверить, был ли пакет уже установлен. Но также можно проверить, был ли пакет удален. Например:
# rpm -q jikes
# rpm -e jikes-1.16-1
package jikes is not installed
3.3.2 Удаление списка пакетов одной командой
Можно удалить группу пакетов, сформировав список в командной строке:
Опция —allmatches заставит rpm удалить все пакеты, имена которых содержат шаблон, заданный администратором в командной строке. Если более, чем один пакет соответствует шаблону, а опция не указана, работа будет завершена с сообщением об ошибке удаления.
Опция —nodeps позволяет удалить пакет даже в том случае, если в системе все еще есть зависящие от него пакеты. Использование этой и ей подобных опций может разрушить систему.
Опция —repackage позволит собрать удаляемые пакеты в rpm-пакет, который появится в директории для таких пакетов. По умолчанию это /var/spool/repackage. Пакет, построенный с помощью опции —repackage не является полноценным пакетом и его нельзя установить.
Подобно режиму установки для удаления можно использовать опции —noscripts и —notriggers. Помимо —noscripts также можно применить —nopreun и —nopostun. Соответственно, —nopreun отменяет выполнение скриптов перед удалением пакета, а —nopostun — скриптов, которые должны были отработать после удаления. Также сходным образом применяется опция —notriggers, или раздельно —notriggerun или —notriggerpostun.
Источник
RPM команды операционной системы на базе Linux
RPM Command in Linux
В этом руководстве мы поговорим о том, как использовать rpm команду для установки, обновления, удаления, проверки, запроса и иного управления пакетами RPM.
RPM Package Manager (RPM) — это мощная система управления пакетами, используемая Red Hat Linux и его производными, такими как CentOS и Fedora. RPM также относится к 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 возможность показать хэш отмечен прогресс бар.
Вы можете пропустить часть загрузки и указать команду для пакета 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, выполните следующую команду:
Вывод
rpm низкоуровневое средство командной строки для установки, и удаления пакетов RMP. При установке RPM-пакетов следует предпочитать использовать yum или, dnf поскольку они автоматически разрешают все зависимости для вас.
Источник
Удалить пакет linux rpm
RPM имеет пять основных режимов работы (не считая создания пакета): установка, удаление, обновление, анализ и проверка. Этот раздел содержит описание каждого режима. Чтобы получить полное описание всех подробностей и параметров, попробуйте выполнить rpm —help или обратиться к разделу 15.5 Дополнительные ресурсы .
Прежде чем воспользоваться пакетами RPM, вы должны знать, где их найти. Поисковые машины в Интернете знают о множество хранилищ RPM, но если вы ищете пакеты RPM, созданные компанией Red Hat, обратитесь к следующим источникам:
Компакт-диски Red Hat Enterprise Linux
Страница обновлений Red Hat, расположенная по адресу http://www.redhat.com/apps/support/errata/ .
Список зеркал FTP-сервера Red Hat, опубликованный по адресу http://www.redhat.com/download/mirror.html
Сеть 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 выводит имя пакета, а затем, по мере установки пакета, последовательность символов «решётка», отражающую процесс установки.
При установке или обновлении пакета автоматически проверяется подпись пакета. Эта подпись подтверждает то, что пакет был подписан разработчиком и не был изменён. Например, если при проверке подписи происходит ошибка, вы получите примерно следующее сообщение:
error: V3 DSA signature: BAD, key ID 0352860f
Если это новая подпись только для заголовка появляется такое сообщение:
error: Header V3 DSA signature: BAD, key ID 0352860f
Если у вас не установлен ключ, подходящий для проверки подписи, сообщение об ошибке содержит слово NOKEY , например:
warning: V3 DSA signature: NOKEY, key ID 0352860f
За дополнительными сведениями о проверке подписи пакета обратитесь к разделу 15.3 Проверка подписи пакета .
Предупреждение
Если вы устанавливаете пакет ядра, вместо этой команды следует использовать rpm -ivh . За подробностями обратитесь к главе 37 Обновление ядра вручную .
Установка пакетов должна выполняться просто, но иногда вы можете встретить ошибки:
Если пакет той же версии уже установлен, вы увидите:
Preparing. ########################################### [100%] package foo-1.0-1 is already installed
Если версия пакета, который вы пытаетесь установить, совпадает с версией уже установленного, но вы, тем не менее, хотите установить пакет, вы можете указать параметр —replacepkgs и RPM проигнорирует эту ошибку:
rpm -ivh —replacepkgs foo-1.0-1.i386.rpm
Этот параметр полезен, если файлы, установленные из пакета RPM, были удалены или вы не хотите, чтобы были установлены оригинальные файлы конфигурации RPM.
Если вы пытаетесь установить пакет, который содержит файл, установленный другим пакетом или более ранней версий того же пакета, на экране появляется сообщение:
Preparing. ########################################### [100%] file /usr/bin/foo from install of foo-1.0-1 conflicts with file from package bar-2.0.20
Чтобы 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.
Так как RPM выполняет умное обновление пакетов с файлами конфигурации, вам может встретиться подобное сообщение:
saving /etc/foo.conf as /etc/foo.conf.rpmsave
Это сообщение означает, что изменения файла конфигурации могут оказаться не совместимыми снизу вверх с новым файлом конфигурации, входящим в пакет, поэтому RPM сохранил ваш первоначальный файл и установил новый. Вы должны проанализировать различия между двумя файлами конфигурации и разобраться с ними как можно скорее, чтобы ваша система смогла продолжить нормальную работу.
Обновление в самом деле представляет собой комбинацию удаления и установки, поэтому во время обновления 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 запрашивает пакет, к которому относится файл . Указывая файл, вы должны определить полный путь к файлу (например, /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 -Vf /usr/bin/vim
Чтобы проверить ВСЕ установленные пакеты:
Чтобы сравнить установленный пакет с файлом RPM-пакета:
rpm -Vp foo-1.0-1.i386.rpm
Эта команда может быть полезна, если вы сомневаетесь в целостности баз данных RPM.
Если проверка проходит успешно, никакие сообщения на экран не выводятся. В случае обнаружения каких-либо нарушений, вы увидите сообщения об этом. Для каждого несоответствия на экран будет выведена строка из восьми символов ( c обозначает файл конфигурации), а затем имя файла. Каждый из восьми символов обозначает результат сравнения одного атрибута файла со значением атрибута, записанного в базе данных RPM. Единственная точка ( . ) означает, что тест пройден. Следующие символы обозначают ошибки при выполнении определённых проверок:
5 — контрольная сумма MD5
L — символическая ссылка
T — дата изменения файла
M — режим (включая разрешения и тип файла)
? — файл не удалось прочитать
Если вы увидели такие сообщения, вы должны решить, будете ли вы удалять или переустанавливать пакет, или исправлять проблему другим способом.