使用zypper,如何删除特定存储库中安装的所有软件包?


10

假设我使用添加了存储库zypper ar。然后,我从该存储库中安装了多个软件包,但是现在我想删除所有软件包。

是否有命令允许我仅从该特定存储库中删除所有已安装的软件包?

Answers:


7

我认为没有这样的命令。您可以列出特定存储库中的软件包:

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

或所有孤立的软件包(如果您已删除该存储库):

zypper packages --orphaned

然后,您可以尝试cut将输出中的名称打包,zypper remove如果值得的话将其传递给。


我的openSuSE 12.3系统没有该--orphaned选项,但是这可能起作用zypper packages -i -R::它以存储库的相反顺序列出已安装的软件包。
Jeroen Wiert Pluimers 2014年

2
--orphaned在zypper的1.9.2(加入github.com/openSUSE/zypper/issues/34
马辛

1

您可以使用的组合zypper searchawkxargs从资源库中删除所有包。例如:

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行,但是如果您已经使用了regex ...;)
Mesco

也许我使用的是不同的zypper版本(1.14.4),但它的人说应该按顺序进行,se [options] [query]这样您的解决方案就无法使用。
Mesco

嗯,现在我明白了您的担心。我更新了答案。关于搜索语法:我只使用选项,不使用查询,因此我认为顺序是正确的。
sebix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.