有時您想知道某個軟件包何時安裝在您的操作系統上,如果您是 Linux 系統管理員,可能主要用於審計目的。
在這篇博文中,我將向您展示如何在 Linux – Ubuntu、Debian、CentOS 和 Arch Linux 發行版上按日期列出已安裝的軟件包。
在 Ubuntu/Debian 上按日期列出已安裝的軟件包
如果您正在運行 Ubuntu、Debian 或任何其他 Debian 衍生產品,如 Kubuntu、Xubuntu 等,則使用的命令將類似。 要列出按日期排序的已安裝軟件包,請運行:
$ grep -i "install" /var/log/dpkg.log
請注意,僅當安裝的軟件包已記錄到文件中時,上述命令才有效 /var/log/dpkg.log. 由於 Linux 系統默認具有某種日誌輪換功能,因此這不適用於已壓縮的輪換日誌。 要獲取包的所有安裝日期,包括那些日誌已輪換的包,請使用以下命令:
$ zcat /var/log/dpkg.log.* | grep -i "installed"
示例輸出是:
.....
2017-05-23 07:49:41 status installed libxaw7:amd64 2:1.0.13-1
2017-05-23 07:49:41 status installed libxcb-shape0:amd64 1.11.1-1ubuntu1
2017-05-23 07:49:41 status installed x11proto-xext-dev:all 7.3.0-1
2017-05-23 07:49:41 status installed libxext-dev:amd64 2:1.3.3-1
2017-05-23 07:49:41 status installed x11proto-render-dev:all 2:0.11.1-2
2017-05-23 07:49:41 status installed libxrender-dev:amd64 1:0.9.9-0ubuntu1
2017-05-23 07:49:41 status installed libxft-dev:amd64 2.3.2-1
2017-05-23 07:49:41 status installed libxrandr2:amd64 2:1.5.0-1
2017-05-23 07:49:41 status installed x11proto-scrnsaver-dev:all 1.2.2-1
貓 命令讀取壓縮文件,然後我們將輸出通過管道傳遞給 grep 進行過濾。
如果你想為一個你知道其名稱的某些部分的特定包進行 grep,你可以再次通過管道將輸出傳遞給 grep 命令。 看 example 在下面搜索安裝日期 apt-mirror 包裹。
# zcat /var/log/dpkg.log.* | grep -i "installed" | grep apt-mirror
2017-06-26 09:47:52 status installed apt-mirror:all 0.5.1-1ubuntu1
zcat 的替代方法是 zgrep 命令,其工作方式與 zcat 類似。 只需將其視為壓縮文件的 grep 命令:
# zgrep "installed" /var/log/dpkg.log*
# zgrep "installed" /var/log/dpkg.log* | grep apt-mirror
/var/log/dpkg.log.7.gz:2017-06-26 09:47:52 status installed apt-mirror:all 0.5.1-1ubuntu1
zgrep 的優點是它會向您顯示從中獲取數據的日誌文件。 從上面可以看出,數據是從文件中提取的 /var/log/dpkg.log.7.gz.
在 CentOS 中按日期列出已安裝的軟件包
對於基於 RPM 的系統,如 Hat、CentOS、Scientific Linux, Fedora, SUSE, rpm 命令用於按日期列出已安裝的軟件包。 要運行的確切命令是:
# rpm -qa --last
此命令按安裝時間列出軟件包,最近的排在最前面。 此命令的輸出將如下所示:
libxml2-2.9.1-6.el7_2.3.x86_64 Sat 09 Dec 2017 10:15:00 AM EAT
findutils-4.5.11-5.el7.x86_64 Sat 09 Dec 2017 10:15:00 AM EAT
libgpg-error-1.12-3.el7.x86_64 Sat 09 Dec 2017 10:14:59 AM EAT
libffi-3.0.13-18.el7.x86_64 Sat 09 Dec 2017 10:14:59 AM EAT
libcap-ng-0.7.5-4.el7.x86_64 Sat 09 Dec 2017 10:14:59 AM EAT
libattr-2.4.46-12.el7.x86_64 Sat 09 Dec 2017 10:14:59 AM EAT
libacl-2.2.51-12.el7.x86_64 Sat 09 Dec 2017 10:14:59 AM EAT
dbus-libs-1.6.12-17.el7.x86_64 Sat 09 Dec 2017 10:14:59 AM EAT
sed-4.2.2-5.el7.x86_64 Sat 09 Dec 2017 10:14:58 AM EAT
要搜索特定軟件包的安裝日期,請在上述命令的末尾附加軟件包名稱。
# rpm -qa --last postfix3
postfix3-3.2.0-1.gf.el7.x86_64 Thu 25 May 2017 01:04:35 AM EAT
來自 example. postfix3 軟件包已於 2017 年 5 月 25 日星期四上午 01:04:35 安裝。
在 Arch 上按日期列出已安裝的軟件包
對於 Arch Linux 及其衍生產品,例如 Antergos、Manjaro、Apricity、Ninja OS 等,使用了名為 expac 的 alpm 數據庫數據提取實用程序。 調用 expac 包括提供格式字符串。 可以使用支持的命令選項和參數對輸出進行進一步格式化。
$ expac --timefmt="%F %T" '%l %n'
要根據字符串數值比較輸出,請將輸出通過管道傳輸到 排序 -n 命令。
$ expac --timefmt="%F %T" '%l %n' | sort -n
最近的將在底部,您可以通過管道輸出以獲得最新的安裝。
$ expac --timefmt="%F %T" '%l %n' | sort -n | tail -n 7
2018-01-15 14:41:15 webkitgtk
2018-01-16 09:18:26 babl
2018-01-16 09:18:26 gegl02
2018-01-16 09:18:26 lcms
2018-01-16 09:18:26 libspiro
2018-01-16 09:18:26 libwmf
2018-01-16 09:18:27 gimp
這 example 列出了 7 個最近安裝的軟件包。
包起來
至此,我們已經介紹了在 CentOS、Ubuntu、Debian 和 Arch Linux 上檢查軟件包安裝日期所需的所有步驟。 對於任何具有相同父衍生的操作系統,命令應該是相同的。 由於某些發行版具有多個執行相同工作的命令,因此只需堅持使用您喜歡的命令即可。
另請閱讀:
- Topgrade – 在 Linux 上升級所有軟件包的命令行工具
- 如何在 Ubuntu 上查找擁有特定文件的軟件包
- 如何在 Ubuntu/CentOS 中升級單個軟件包
- 如何在 Ubuntu/Debian 上顯示已安裝的包大小