dnf list installed
输出是人类可读的,但对机器解析器不太友好。是否有命令允许我们以 json 或 csv 或其他解析器友好的格式获取已安装的包? dnf 有 python 绑定提供更好的界面吗?
答案1
该rpm
命令提供了一些更灵活的选项来打印结果。要列出已安装的软件包,您可以使用rpm --query --all
并使用 格式化输出--queryformat
。
例如,仅打印您可以使用的包的名称rpm -qa --queryformat "%{NAME}\n"
。您可以使用类似语法进一步指定输出printf
,并且可以使用rpm --querytags
打印所有可用的“变量”rpm
来打印有关包的信息。查看rpm 手册页了解更多信息。
是的,DNF 也有 Python 绑定,文档可用这里要获取已安装的软件包,您可以执行以下操作:
import dnf
base = dnf.Base()
base.fill_sack()
q = base.sack.query()
list(q.installed())
答案2
是否有命令允许我们以 JSON 或 CSV 或其他解析器友好的格式获取已安装的包?
也可以通过在示例中使用后处理来实现,例如
dnf list installed | tail -n +2 | awk -F '[.]' '{ print $1 }'
仅提供所有已安装软件包的名称列表。
可以通过添加以下内容将其转换为 JSON 格式
| jq --raw-input . | jq --slurp .
谢谢
其他问答