インストールされたdnfsのリストから解析可能な出力を取得するにはどうすればよいですか?

インストールされたdnfsのリストから解析可能な出力を取得するにはどうすればよいですか?

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 .

ありがとう

その他の質問と回答

関連情報