web-dev-qa-db-ja.com

Ubuntu / Debian w / oコマンドまたはpkg.logを参照せずにインストールされたパッケージのリストを取得する方法は?

コマンドを使用せずに、またはdpkg.logを確認せずに、Ubuntu/Debianにインストールされているパッケージのリストを抽出する必要がありますか?

基本的な要件は、パッケージdbファイルからDebian/Ubuntu OSにインストールされているパッケージのリストを取得することです(存在する場合)次のファイルから利用可能なパッケージのリストを取得できます。

/var/lib/dpkg/available

ただし、このファイルには、インストールされていないものを含むすべてのパッケージが含まれています。

Debian/Ubuntuには、インストール済みパッケージのみのリストを含む他のdbファイルはありますか?

1
Pro Account

dpkg -lコマンドで提供される情報と同じ情報を含むファイルは/var/lib/dpkg/statusです。 man dpkgFILESセクションから:

   /var/lib/dpkg/status
          Statuses of available  packages.  This  file  contains  information
          about  whether  a package is marked for removing or not, whether it
          is installed or not, etc. See section  INFORMATION  ABOUT  PACKAGES
          for more info.

          The  status  file  is  backed  up  daily in /var/backups. It can be
          useful if it's lost or corrupted due to filesystems troubles.

   The format and contents of a binary package are described in deb(5).

ただし、コマンドを作成して解析する必要があるため、「コマンドなし」の要件はほとんど意味がありません。例えば

awk -vRS= '/Status: install/ {print $2}' /var/lib/dpkg/status

dpkg -l | awk '$1 == "ii" {print $2}'とほぼ同じになります(ソート順序と、:AMD64などのいくつかの可能なアーキテクチャサフィックスが異なります)。

1
steeldriver