如何列出由Linux中的安装日期排序的已安装软件包

时间:2020-03-21 11:46:11  来源:igfitidea点击:

此简要介绍介绍如何在Unix的操作系统中的命令行中列出按所需安装日期排序的安装包。
如果我们想知道我们在Linux框中的某个日期或者时间安装了多少或者包含哪些包,则会有用。

列出由安装日期排序的安装包

关于Arch Linux:

在ARCH Linux及其衍生物(如antergos)和manjaro linux等衍生物,我们可以使用命令列出通过安装日期排序的已安装的包:

$expac --timefmt='%Y-%m-%d %T' '%l\t%n'|sort -n

来自My Arch Linux盒子的示例输出:

[...]
2016-05-24 12:54:10 filesystem
2016-05-24 13:29:57 linux
2016-05-25 16:24:49 btfs
2016-05-25 16:24:49 libtorrent-rasterbar
2016-05-31 17:13:05 cheese
2016-05-31 17:13:05 clutter-gst
2016-05-31 17:39:12 gsl
2016-05-31 17:39:12 guvcview
2016-06-11 19:34:34 chromium
2016-06-11 19:41:24 firefox
2016-06-12 14:34:08 libappindicator-gtk2
2016-06-12 14:34:08 libdbusmenu-glib
2016-06-12 14:34:08 libdbusmenu-gtk2
2016-06-12 14:34:08 libindicator-gtk2
2016-06-12 14:37:52 ao
2016-06-16 13:20:31 exo
2016-06-16 13:20:31 libxfce4ui
2016-06-16 13:20:31 libxfce4util
2016-06-16 13:20:31 perl-uri
2016-06-16 13:20:31 xfconf
2016-06-16 13:20:32 thunar

上面的命令将列出由安装日期排序的所有已安装的包。
我们还可以使用命令列出10个上次安装的软件包:

$expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort | tail -n 10

基于RPM的系统:

在Rhel,及其克隆等CentOS,Scienific Linux,以root用户运行以下命令以列出已安装的软件包:

# rpm -qa --last

来自CentOS 7系统的示例输出:

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

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

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

要找出特定包的安装日期,例如rsyslog,运行:

# rpm -q --last rsyslog

示例输出:

rsyslog-7.4.7-16.el7.x86_64 Mon 22 Jan 2016 03:13:00 PM IST

有关详细信息,关于RPM命令,请参阅手册页。

# man rpm

在基于DEB的系统:

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

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

来自我的Ubuntu系统的示例输出:

2015-04-20 22:08:13 install base-passwd:amd64 <none> 3.5.39
2015-04-20 22:08:14 install base-files:amd64 <none> 9.4ubuntu4
2015-04-20 22:08:14 install libc6:amd64 <none> 2.23-0ubuntu3
2015-04-20 22:08:15 install perl-base:amd64 <none> 5.22.1-9
2015-04-20 22:08:15 install mawk:amd64 <none> 1.3.3-17ubuntu2
2015-04-20 22:08:15 install debconf:all <none> 1.5.58ubuntu1
2015-04-20 22:08:16 install adduser:all <none> 3.113+nmu3ubuntu4
2015-04-20 22:08:16 install bash:amd64 <none> 4.3-14ubuntu1
2015-04-20 22:08:16 install bsdutils:amd64 <none> 1:2.27.1-6ubuntu3
2015-04-20 22:08:16 install coreutils:amd64 <none> 8.25-2ubuntu2
[...]

如果启用日志旋转,则可以使用命令查看上一个安装日志:

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

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

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

请注意,如果已启用日志旋转,则会随着时间的推移删除日志。
因此,在Debian或者Ubuntu系统中安装日期,没有可靠的方法列出已安装的包。

我们现在知道安装了哪些软件包,并且在我们在Linux系统上安装它们时。