Используя zypper, как я могу удалить все пакеты, установленные из определенного репозитория?

10

Скажем, я добавил хранилище, используя zypper ar. Затем я пошел и установил несколько пакетов из этого хранилища, но теперь я хочу удалить все из них.

Есть ли команда, которая позволяет мне удалить все пакеты, которые я установил только из этого конкретного репозитория?

Трент Бинг
источник

Ответы:

7

Я думаю, что нет такой команды. Вы можете перечислить пакеты из определенного хранилища:

zypper search --installed-only --repo devel:tools

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

zypper packages --orphaned

Затем вы можете попытаться cutупаковать имена из выходных данных и передать их, zypper removeесли оно того стоит.

Marcin
источник
Моя система openSuSE 12.3 не имеет --orphanedопции, но это может сработать zypper packages -i -R:: она перечисляет установленный пакет в обратном порядке хранилища.
Йерун Wiert Pluimers
2
--orphanedбыл добавлен в zypper 1.9.2 ( github.com/openSUSE/zypper/issues/34 )
marcin
1

Вы можете использовать комбинацию zypper search, awkи xargsудалить все пакеты из репозитория. Например:

zypper se --repo openSUSE-Tumbleweed-Debug --installed | awk '/^i(\+|\s)/ {print $3}' | xargs sudo zypper rm
sebix
источник
awk '/^i(\+|\s)/ {print $3}'соответствовать всем установленным пакетам (i или i +)
Mesco
@Mesco zypper должен печатать только установленные пакеты при использовании --installed.
Sebix
правильно, используя -iили --installed-only. Но я также начал искать i и i +, чтобы пропустить первые несколько строк ( Loading repository data...). Может быть, есть лучшие методы, чтобы пропустить первые 5 строк, но если вы уже используете регулярное выражение ...;)
Mesco
возможно, я использую другую версию zypper (1.14.4), но ее человек говорит, что порядок должен быть se [options] [query]таким, чтобы ваше решение не работало.
Меско
Ах, теперь я понимаю вашу озабоченность. Я обновил ответ. По поводу синтаксиса поиска: я использую только параметры и не запрашиваю запрос, поэтому я считаю, что порядок правильный.
Sebix