怎样在 Linux 中列出按安装日期排序的已安装软件包

本简要指南介绍了怎样在 Linux 和类 Unix 操作系统中从命令行列出按安装日期排序的已安装软件包。 这在您想要获取 rpm 软件包更新历史记录时会很有帮助,例如安装软件包的时间、特定日期和时间在您的系统上安装了多少软件包以及您在特定日期或时间安装了哪些软件包Linux盒子。

内容

  1. 在 Linux 中按安装日期列出已安装的软件包
    1. 1. 列出在 Arch Linux 和衍生产品上按安装日期排序的已安装包
    2. 2. 获取 RHEL、CentOS 上的 RPM 包更新历史, Fedora
    3. 3.在Debian、Ubuntu系统上查看包更新历史

在 Linux 中按安装日期列出已安装的软件包

有不同的方法可以按上次安装或更新的日期列出 Linux 系统上的软件包。

1. 列出在 Arch Linux 和衍生产品上按安装日期排序的已安装包

在 Arch Linux 及其衍生产品(如 Manjaro Linux)中,您可以使用以下命令按安装日期排序列出已安装的软件包:

$ expac --timefmt="%Y-%m-%d %T" '%lt%n'|sort -n

我的 Arch Linux 机器的输出示例:

2020-12-15 13:02:09 iana-etc
2020-12-15 13:02:10 filesystem
2020-12-15 13:02:10 linux-api-headers
2020-12-15 13:02:12 tzdata
2020-12-15 13:02:14 glibc
2020-12-15 13:02:17 gcc-libs
2020-12-15 13:02:20 ncurses
2020-12-15 13:02:20 readline
2020-12-15 13:02:21 acl
2020-12-15 13:02:21 attr
[...]

列出在 Arch Linux 上按安装日期排序的已安装软件包

上面的命令将列出所有已安装的包,按 Arch Linux 中的安装日期排序。 您还可以使用以下命令列出最后安装的 10 个软件包:

$ expac --timefmt="%Y-%m-%d %T" '%lt%n' | sort | tail -n 10

如果您的 Arch Linux 系统上未安装 expac,请运行以下命令进行安装:

$ sudo pacman -S expac

2. 获取 RHEL、CentOS 上的 RPM 包更新历史, Fedora

在 Fedora, RHEL, 和它的克隆像 CentOS, 运行以下命令 或者 sudo 用户列出已安装的软件包历史记录:

# rpm -qa --last

样本输出来自 Fedora:

gpg-pubkey-9570ff31-5e3006fb Monday 19 October 2020 11:40:17 PM
rootfiles-8.1-28.fc33.noarch Monday 19 October 2020 11:37:48 PM
fedora-repos-modular-33-1.noarch Monday 19 October 2020 11:37:48 PM
tar-1.32-6.fc33.x86_64 Monday 19 October 2020 11:37:47 PM
syslinux-extlinux-6.04-0.16.fc33.x86_64 Monday 19 October 2020 11:37:47 PM
sudo-1.9.2-1.fc33.x86_64 Monday 19 October 2020 11:37:47 PM
rsync-3.2.3-1.fc33.x86_64 Monday 19 October 2020 11:37:47 PM
parted-3.3-5.fc33.x86_64 Monday 19 October 2020 11:37:47 PM
man-db-2.9.2-6.fc33.x86_64 Monday 19 October 2020 11:37:47 PM
hostname-3.23-3.fc33.x86_64 Monday 19 October 2020 11:37:47 PM
[...]

获取 RHEL、CentOS 上的 RPM 包更新历史记录, Fedora

CentOS 的示例输出:

iwl105-firmware-18.168.6.1-49.el7.noarch Mon 22 May 2017 03:13:16 PM IST
libreport-filesystem-2.1.11-35.el7.centos.x86_64 Mon 22 May 2017 03:13:15 PM IST
iwl6000g2a-firmware-17.168.5.3-49.el7.noarch Mon 22 May 2017 03:13:15 PM IST
iwl5000-firmware-8.83.5.1_1-49.el7.noarch Mon 22 May 2017 03:13:15 PM IST
epel-release-7-9.noarch Mon 22 May 2017 03:13:10 PM IST
libproxy-0.4.11-10.el7.x86_64 Mon 22 May 2017 03:13:09 PM IST
mariadb-libs-5.5.52-1.el7.x86_64 Mon 22 May 2017 03:13:08 PM IST
e2fsprogs-1.42.9-9.el7.x86_64 Mon 22 May 2017 03:13:07 PM IST
btrfs-progs-4.4.1-1.el7.x86_64 Mon 22 May 2017 03:13:06 PM IST
libselinux-python-2.5-6.el7.x86_64 Mon 22 May 2017 03:13:03 PM IST
avahi-autoipd-0.6.31-17.el7.x86_64 Mon 22 May 2017 03:13:03 PM IST
sudo-1.8.6p7-21.el7_3.x86_64 Mon 22 May 2017 03:13:02 PM IST
[...]

此外,您可以使用此命令列出按安装日期或时间排序的已安装软件包:

# rpm -qa --qf '%{INSTALLTIME} (%{INSTALLTIME:date}): %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}n' | sort -n

要找出特定软件包的安装日期,例如 example 同步, 跑:

# rpm -q --last rsync

示例输出:

rsync-3.2.3-1.fc33.x86_64 Monday 19 October 2020 11:37:47 PM

3.在Debian、Ubuntu系统上查看包更新历史

在 Debian、Ubuntu 和所有基于 APT 的系统中,您可以使用以下命令按安装日期/时间排序列出已安装的软件包:

$ grep " install " /var/log/dpkg.log

或者,

$ grep install /var/log/dpkg.log

或者,

$ grep installed /var/log/dpkg.log

来自 Ubuntu 的示例输出:

[...]
2021-02-05 16:38:09 status installed python3-update-manager:all 1:20.04.10.5
2021-02-05 16:38:09 status installed update-manager-core:all 1:20.04.10.5
2021-02-05 16:38:15 status installed man-db:amd64 2.9.1-1
2021-02-05 16:38:16 status installed menu:amd64 2.1.47ubuntu4
2021-02-05 16:38:16 status installed desktop-file-utils:amd64 0.24-1ubuntu3
2021-02-05 16:38:17 status installed mime-support:all 3.64ubuntu1
2021-02-05 16:38:17 status installed gnome-menus:amd64 3.36.0-1ubuntu1
2021-02-05 16:38:19 status installed libglib2.0-0:amd64 2.64.6-1~ubuntu20.04.1
2021-02-05 16:38:19 status installed update-manager:all 1:20.04.10.5
2021-02-05 16:38:19 status installed gconf2:amd64 3.2.6-6ubuntu1

查看 Debian、Ubuntu 上的软件包更新历史

查看 Debian、Ubuntu 上的软件包更新历史

如果 日志轮换已启用,您可以使用以下命令查看以前的安装日志:

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

要查看存档日志,请运行:

$ zgrep " install " /var/log/dpkg.log.2.gz

请注意,如果您已启用 日志轮换,随着时间的推移,日志将被删除。 因此,没有可靠的方法可以在 Debian 或 Ubuntu 系统中按安装日期列出已安装的软件包。

这些是在 Linux 中查找包更新历史记录的几种方法。 您现在知道安装了哪些软件包以及何时在您的 Linux 系统上安装了它们。 希望这可以帮助。

相关阅读:

  • 怎样在 Linux 中列出已安装的软件包

资源: