私は以下を使用しています:
dpkg-query -W -f='${package}\t${version}\t${architecture}\n'
インストールされているパッケージが一覧表示されますが、削除対象としてマークされたパッケージ、つまり状態のあるパッケージも表示されますrc
。
インストールされたパッケージのみを入手するには?
答え1
dpkg-query
ステータスフィルタリングはサポートされていませんが、パケットステータスを出力してフィルタリングできます。
dpkg-query -W -f='${Status}\t${package}\t${version}\t${architecture}\n' | grep "^install ok installed"
dpkg -l
状態自体に基づいているため、dpkg-query
状態自体をフィルタリングする方法はありません。
aptitude
より強力な検索オプションが利用可能で、これに使用できます。パターンに一致するインストール済みパッケージのリストを取得する正しい方法は何ですか?もっと学ぶ。次のコマンドは、インストールされているすべてのパッケージ(およびインストールされたパッケージのみ)のパッケージ名、バージョン、およびアーキテクチャを表示します。
aptitude search "~i" -F "%p%v#%E"
パッケージ名がシステムのデフォルトのアーキテクチャと一致しない場合、パッケージ名にアーキテクチャが含まれます。
zlib1g 1:1.2.11.dfsg-1 amd64
zlib1g:i386 1:1.2.11.dfsg-1 i386
答え2
使用するコマンドはパッケージ、バージョン番号、およびアーキテクチャのみを指定し、状態に関係なくすべてを印刷します。
インストールされているパッケージのみを表示するには、次の手順を実行します。
dpkg --list | grep ^ii
ステータスは最初の列に表示され、これはインストールii
が期待されることを意味します。パイプラインはgrep ^ii
この状態のパッケージのみを表示します。
amd64 アーキテクチャ用のパッケージのみをインストールする場合:
dpkg --list | grep "^ii.*amd64"
ii
これにより、ステータスsumを含むパッケージのみが印刷されますamd64
。
同じ操作を実行するには、1列目と4列目の行のみをawk
印刷します。ii
amd64
dpkg --list | awk '$1=="ii" && $4=="amd64"'