Удаление нескольких пакетов с использованием 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')