特定のパッケージが最後に更新された日時を返すコマンドはありますか?現在私はxorgがいつ最後に更新されたかに興味があります(いくつかのソフトウェアには複数のパッケージが含まれていることを知っています)、これはさまざまなパッケージについてよく知りたいことです。私はLinux Mintを使用しています。 (はい、Mintに更新履歴のGUI機能があることはわかっていますが、スクロールが必要で人のミスが発生する可能性があります。)
答え1
特定のパッケージでは、
zgrep -h "status installed package" /var/log/dpkg.log* | sort | tail -n 1
パッケージが最後に正常にインストールされた時刻を通知します。これはパッケージの状態を反映しているため、アップグレードも含まれます。これにはDebian派生物のすべてのパッケージ操作が含まれているため、どのパッケージ管理ツール(直接、PackageKitなど)をdpkg
使用しても関係なく機能します。dpkg
apt
例えば、
$ zgrep -h "status installed xserver-xorg-core" /var/log/dpkg.log* | sort | tail -n 1
2022-08-07 06:40:54 status installed xserver-xorg-core:amd64 2:1.20.11-1+deb11u2
そのような場合apt
(直接使用しない限り、通常はそうですdpkg
)、履歴からより多くの情報を取得できます。
zcat -f $(ls -tr /var/log/apt/history.log*)|awk -v RS= '/package/{s=$0}; END{print s}'
これは、パッケージが最後に作業に参加した時間apt
とそれに影響を与えたコマンドを伝えます。たとえば、
$ zcat -f $(ls -tr /var/log/apt/history.log*)|awk -v RS= '/xserver-xorg-core/{s=$0}; END{print s}'
Start-Date: 2022-08-07 06:40:51
Commandline: /usr/bin/unattended-upgrade
Upgrade: xserver-xorg-core:amd64 (2:1.20.11-1+deb11u1, 2:1.20.11-1+deb11u2)
End-Date: 2022-08-07 06:41:01
(わかりましたなぜ`ls`を解析しないのですか*(そしてどうすればいいですか?)ここでは、ファイル名が安全であると仮定します。これは、デフォルトのログ回転のデフォルト設定の場合です。また、IFS
デフォルト値に設定されているとします。 )
パッケージファイルchangelog.Debian.gz
の一番上のエントリは、ディストリビューションで最後に変更された時期を示します。
$ zcat /usr/share/doc/xserver-xorg-core/changelog.Debian.gz | head -n 7
xorg-server (2:1.20.11-1+deb11u2) bullseye-security; urgency=medium
* xkb: add request length validation for XkbSetGeometry (CVE-2022-2319)
* xkb: swap XkbSetDeviceInfo and XkbSetDeviceInfoCheck (CVE-2022-2320)
* Closes: #1014903.
-- Emilio Pozuelo Monfort <[email protected]> Fri, 05 Aug 2022 10:00:36 +0200