Удаление нескольких пакетов с использованием rpm или yum
Мне был предоставлен доступ к серверу с установленным 50 + php rpms. Я пытаюсь удалить их все.
В принципе, я пытаюсь объединить эти две команды:
rpm -qa | grep 'php'
и
rpm --erase
Я немного знаю о трубах и перенаправлении, но я не понимаю, как их использовать для этой цели. Пожалуйста, помогите.
Ответы
Ответ 1
Использование yum
Список и удаление указанных пакетов и всех их зависимостей, но с подтверждением y/N
:
yum remove 'php*'
Чтобы обойти подтверждение, замените yum
на yum -y
.
Используя rpm
Этот раздел основан на ответах twalburg и Рикардо.
Укажите, какие RPM установлены:
rpm -qa 'php*'
rpm -qa | grep '^php' # Alternative listing.
Перечислите, какие RPM будут удалены, не удаляя их:
rpm -e --test -vv $(rpm -qa 'php*') 2>&1 | grep '^D: erase:'
На Amazon Linux вам может понадобиться вместо grep '^D: ========== ---'
.
Если соответствующие RPM не указаны в приведенной выше команде, расследуйте ошибки:
rpm -e --test -vv $(rpm -qa 'php*')
Стереть эти RPM:
rpm -e $(rpm -qa 'php*')
Подтвердите стирание:
rpm -qa 'php*'
Ответ 2
Обычный инструмент для этого задания xargs
:
rpm -qa | grep 'php' | xargs rpm -e
Это вызовет rpm -e
со всеми пакетами, указанными в стандартном вводе xargs
в качестве аргументов.
Ответ 3
Другой вариант - использовать вывод rpm -qa | grep ...
в команде rpm --erase
напрямую:
rpm --erase `rpm -qa | grep php`
Возможно, не для случая php
, который вы цитируете, но подход xargs
может столкнуться с проблемами, если он решает разбить список на несколько вызовов rpm -e
, а первый список содержит пакеты, которые являются зависимостями пакетов в последующих списках. Конечно, если вы удаляете сразу несколько пакетов, у вас могут быть другие вещи, которые вам нужно учитывать...
Ответ 4
:
rpm -qa | grep 'php'
удалить внедренные перечисленные и отфильтрованные:
rpm -e $(rpm -qa |grep 'php')