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


10

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

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

Ответы:


7

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

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

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

zypper packages --orphaned

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


Моя система 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

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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.