インストール日ごとに適切なベースシステムのパッケージを一覧表示する

インストール日ごとに適切なベースシステムのパッケージを一覧表示する

インストール日ごとにインストールされたパッケージを一覧表示するには?

Debian/Ubuntu でこれを行う必要があります。他のディストリビューションへの答えも良いです。

特定のコードをコンパイルするために多くをインストールしましたが、インストールする必要があるパッケージのリストを取得したいと思います。

ベストアンサー1

RPMベースの展開(Red Hatなど)は簡単です。

rpm -qa --last

Debianやその他のdpkgベースのディストリビューションでは、特定の質問も簡単です。

grep install /var/log/dpkg.log

ログファイルが置き換えられていない場合は、以下を試してください。

grep install /var/log/dpkg.log /var/log/dpkg.log.1

通常、マニュアルページに対応するフィールドがないため、dpkgインストールapt日は追跡されないようですdpkg-query

結局のところ、古い/var/log/dpkg.log.*ファイルはログ循環を通して削除されるため、このアプローチはシステムの完全な履歴を提供することを保証できません。

何度も表示される提案(例:このスレッド/var/lib/dpkg/info)ディレクトリを見てください。この記事では、次のことを試すことができることを示唆しています。

ls -t /var/lib/dpkg/info/*.list | sed -e 's/\.list$//' | head -n 50

選択に関する質問に答えるための最初のステップは次のとおりです。

日付別にパッケージリストを作成する

$ find /var/lib/dpkg/info -name "*.list" -exec stat -c $'%n\t%y' {} \; | \
    sed -e 's,/var/lib/dpkg/info/,,' -e 's,\.list\t,\t,' | \
    sort > ~/dpkglist.dates

インストール済みパッケージのリストの作成

$ dpkg --get-selections | sed -ne '/\tinstall$/{s/[[:space:]].*//;p}' | \
    sort > ~/dpkglist.selections

リストを2つ追加

$ join -1 1 -2 1 -t $'\t' ~/dpkglist.selections ~/dpkglist.dates \
    > ~/dpkglist.selectiondates

何らかの理由でそれは私に多くの違いを印刷しないので、バグがあるか、意味に間違った仮定があるかもしれません--get-selections

find . -mtime -<days>head -n <lines>必要に応じて、明らかにパッケージを使用または制限し、出力形式を変更できます。

$ find /var/lib/dpkg/info -name "*.list" -mtime -4 | \
    sed -e 's,/var/lib/dpkg/info/,,' -e 's,\.list$,,' | \
    sort > ~/dpkglist.recent

$ join -1 1 -2 1 -t $'\t' ~/dpkglist.selections ~/dpkglist.recent \
    > ~/dpkglist.recentselections

過去4日以内にインストールされた(変更?)選択肢のみが一覧表示されます。

sort使用されたソート順を確認したら、コマンドを削除してコマンドをより効率的にすることもdpkg --get-selectionsできます。find

おすすめ記事