Стереть несколько пакетов с помощью rpm или yum

Мне дали доступ к серверу с более чем 50 установленными оборотами php. Я пытаюсь удалить их все.

По сути, я пытаюсь объединить эти две команды:

rpm -qa | grep 'php'

а также

rpm --erase

Я немного разбираюсь в каналах и перенаправлении, но не вижу, как их использовать для этой цели. Пожалуйста помоги.


person jerry    schedule 17.08.2012    source источник


Ответы (5)


Использование 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*'
person Acumenus    schedule 10.03.2014
comment
Команда grep ничего не находит в моем экземпляре Amazon Linux, я думаю, вместо этого она должна искать '^D: ========== ---'. Кроме того (поскольку это неочевидно), в случае нескольких подстановочных знаков (например, LibreOffice) команда запроса будет выглядеть как rpm -qa 'libreoffice*' 'libobasis*'. - person vallismortis; 07.06.2017

Обычный инструмент для этой работы — xargs:

rpm -qa | grep 'php' | xargs rpm -e

Это вызовет rpm -e со всеми пакетами, названными в стандартном вводе xargs в качестве аргументов.

person thkala    schedule 17.08.2012
comment
Этот подход часто просто не работает из-за зависимостей. - person Acumenus; 11.03.2014

Другой вариант — напрямую использовать вывод rpm -qa | grep ... в команде rpm --erase:

rpm --erase `rpm -qa | grep php`

Возможно, не для случая php, который вы цитируете, но подход xargs может столкнуться с проблемами, если он решит разделить список на несколько вызовов rpm -e, и первый список будет содержать пакеты, которые являются зависимостями от пакетов в последующих списках. Конечно, если вы удаляете сразу столько пакетов, вам могут понадобиться другие вещи, которые вам нужно учитывать...

person twalberg    schedule 17.08.2012

к списку:

rpm -qa | grep 'php'

удалить установленный список и отфильтровать:

rpm -e $(rpm -qa |grep 'php')
person Ricardo    schedule 27.05.2013

У меня было это сегодня. Использование параметров --justdb и --noscripts rpm было недостаточным без --allmatches, вот и все.

[root@localhost ~]# rpm -ev --allmatches --justdb <the-package-name>

https://mcvictech.blogspot.com/2011/10/rpm-error-specify-multiple-packages.html

person Jcc.Sanabria    schedule 05.04.2020