Debian はインストールされたパッケージのリストをどこに保存しますか?

Debian はインストールされたパッケージのリストをどこに保存しますか?

Debian(Armbian)サーバーがシャットダウンされる前に、インストールされているパッケージのリストを探す必要があります。オフラインなので、またはaptdpkgまたは他のコマンド)は使用できません。私が知る必要がありますどのファイルリストを含めます(バイナリの場合でも)。検索しようとしましたが、すべてはオプションではなく、前述のコマンドを実行するように求められます。

ベストアンサー1

/etcおよび/varバックアップで「dpkg --get-selections」をどのように近似しますか?あなたにとって重要な問題を解決してください。

インストールされたパッケージのリストは/var/lib/dpkg/status.Look for Status: install ok installedline に保存されます。これはパッケージが正しくインストールされたことを示します。

次のAWK呼び出しは、ファイルからインストールされているパッケージ名を抽出しますstatus

awk '/^Package:/ { package = $2 }
     /^Status: install ok installed/ { print package }' /path/to/status

システムが複数のアーキテクチャをサポートしている場合は、そのアーキテクチャも追跡する必要があります。

awk '/^Package:/ { p = $2; i = 0 }
     /^Status: install ok installed/ { i = 1 }
     i && /^Architecture: all/ { print p; next }
     i && /^Architecture/ { printf "%s:%s\n", p, $2 }' /path/to/status

もう一つの興味深いファイルは、インストールされた/var/lib/apt/extended_statesパッケージを記録する「autoinstall」フラグです。次のコマンドを実行してフラグを復元できます。

awk '/^Package:/ { p = $2 }
     /^Architecture/ { a = $2 }
     /^Auto-Installed: 1/ { printf "%s:%s\n", p, a }' /path/to/extended_states |
xargs sudo apt-mark auto

これら2つのファイルを組み合わせて、手動でインストールされたパッケージを一覧表示し、依存関係管理を使用して自動的にインストールされたパッケージをインストールできます(必ずしも同じパッケージセットがインストールされるわけではありません)。

awk 'FNR == NR && /^Package:/ { p = $2 }
     /^Status: install ok installed/ { i = 1 }
     FNR == NR && i && /^Architecture: all/ { ps[p] = 1; next }
     FNR == NR && i && /^Architecture/ { ps[p ":" $2] = 1}
     FNR != NR && /^Package:/ { p = $2 }
     FNR != NR && /^Architecture:/ { a = $2 }
     /^Auto-Installed: 1/ { delete ps[p ":" a] }
     END { for (p in ps) print p }' /path/to/status /path/to/extended_states

「ドキュメント」セクションを参照してください。man dpkg:

/var/lib/dpkg/状態
利用可能なパッケージの状態です。このファイルには、パッケージが削除対象としてマークされているか、インストールされているかなどに関する情報が含まれています。

おすすめ記事