2017-05-19 10 views
0

システムにインストールされているすべてのパッケージのリストを取得しようとしています。このためには、Pythonスクリプト内から 'rpm -qai'を呼び出して、出力のさらなる変換が行われます。rpmクエリの出力をセパレータでフォーマットする

私は一種の今上記のクエリの出力が異なるパッケージを分離しないという問題に遭遇しました。

$ rpm -qai 
Name  : PackageName 
Version : 1.0 
... 
LastEntry: Something 
Name  : NextPackageName 
Version : 1.1 
... 

私は何をしたいことは、私のスクリプトはラインのためにすべての行を読み取り、辞書内の行が保存されますので

Name  : PackageName 
Version : 1.0 
... 
LastEntry: Something 
//empty line or some other kind of separator 
Name  : NextPackageName 
Version : 1.1 
... 

のラインに沿って何かである:これは、次のようになります。私の回避策は、現在の行が 'Name'で始まっていればチェックし、そうであれば辞書をリストに追加して辞書をクリアする。このステップは最初の行でスキップされます。

このソリューションは非常に醜いです。残念ながら、すべてのパッケージが同じ量の情報を提供するわけではないので、固定数の行は機能しません。

は、私はまた、その後、このことから、すべてのパッケージ名のリストを取得し、最初の「回転数-qai」を実行「のrpm -qi current_item」の呼び出し中にリストを反復処理について考えました。次に、それぞれの単一のクエリから出力を取得できます。しかし、これは2回の実行が必要なので、私はそれが不必要な余分な仕事とみなします。

ので、RPM(または他のツール)は、所望の出力を可能にする機能を提供していますか?

答えて

0

「適切な」RPMDBインターフェースの代わりに、「rpm」の出力を解析するためのpythonバインディングがあります。 gitの磁器対配管と考えてください。実際には、yumはすべてpythonです(前回チェックしたとき)。私はそれがあなたのために長期的にはより良いと思う。

This documentationは良いスタートである可能性があります。

+0

これは良い提案ですが、実際の回答ではありません。 –

関連する問題