インストールされたパッケージをインストール日別に一覧表示するにはどうすればよいですか?
私はdebian/ubuntuでこれを行う必要があります。他のディストリビューションの回答もいいでしょう。
特定のコードをコンパイルするためにたくさんのものをインストールしましたが、インストールする必要のあるパッケージのリストを取得したいと思います。
承認された回答:
Red HatのようなRPMベースのディストリビューションは簡単です:
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.*
ファイルはログローテーションによって削除されるため、システムの履歴全体が提供されるとは限りません。
数回表示される1つの提案(このスレッドなど)は、/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 $'%nt%y' {} ; |
sed -e 's,/var/lib/dpkg/info/,,' -e 's,.listt,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
を作成します より効率的なコマンド。