dpkg-query -l 显示已删除的软件包,但 dpkg-query -l "pattern" 找不到它们 - 为什么?

dpkg-query -l 显示已删除的软件包,但 dpkg-query -l "pattern" 找不到它们 - 为什么?

我刚刚卸载了某些软件包的某些 i386 版本。如果我执行:

dpkg-query --list | grep ":i386"

我看到它们被列出来了。但是,如果我执行:

dpkg-query ---list "*:i386"

我没有看到他们,也没有提供--show帮助--list

我不能使用 dpkg-query 本身在所有包中搜索吗?

答案1

dpkg-query --list据记录采用“package-name-pattern”,这是包名称上的 shell glob 样式模式。架构(:i386位)不是包名称的一部分,因此包名称模式无法匹配它。

不过,您可以使用grep-dctrl(或其别名,例如grep-statusgrep-available)来执行此操作。dctrl-tools如果您还没有安装,则需要安装。

grep-status -sPackage --not -FStatus installed --and -FArchitecture i386

可能会做与您正在寻找的类似的事情。它会在状态文件中查找 Status 字段与“installed”不匹配且 Architecture 字段与“i386”匹配的内容。

如果您正在寻找已卸载但未清除的 i386 软件包,您可以尝试:

grep-status -sPackage -FStatus config-files --and -FArchitecture i386

或者(正如您现在可能已经猜到的那样),安装 i386 软件包:

grep-status -sPackage -FStatus installed --and -FArchitecture i386

所有grep-dctrl变体都有大量选项来准确指定要搜索的内容以及要输出的字段;这grep-dctrl 联机帮助页有详细信息。

相关内容