删除在 Linux 中特定日期/时间安装的软件包

我在 Linux VM 中安装并测试了很多应用程序。 完成测试后,我将删除不再使用的已安装包。 由于我经常安装许多应用程序,我发现手动一个一个地删除软件包是一项耗时的任务。 此外,我有时会忘记卸载不必要的软件包。 如果您和我一样,这里有一个简单的解决方法,可以在 Linux 中查找和删除在特定日期和时间安装的所有软件包。

您可能已经知道,我们可以 查找按安装日期排序的已安装软件包列表 在使用以下任一命令的各种 Linux 发行版中。

在 Arch Linux、EndeavourOS 和 Manjaro Linux 上:

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

在 Fedora、RHEL、CentOS、AlmaLinux 和 Rocky Linux:

$ sudo rpm -qa --last

在 Debian、Ubuntu、Linux Mint 和 Pop OS 上:

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

上述命令将列出所有日期安装的所有软件包。 但是,我们有兴趣查找并删除已安装的软件包 在特定日期和时间 只要。

我们可以用 %yyyy-%mm-%dd 参数与 格雷普 命令列出在特定日期和时间安装的所有软件包。

例如,以下命令显示 2021 年 9 月 14 日在我的 Debian 11 牛眼系统中所有已安装的软件包。

$ grep "2021-09-14.*.install " /var/log/dpkg.log

示例输出:

2021-09-14 06:51:51 install tmpreaper:amd64 <none> 1.6.14+nmu2 2021-09-14 11:14:14 install hello:amd64 <none> 2.10-2 2021-09-14 11:17:13 install hello:amd64 <none> 2.10-2 2021-09-14 11:17:13 install tmpreaper:amd64 <none> 1.6.14+nmu2 2021-09-14 11:22:29 install hello:amd64 <none> 2.10-2 2021-09-14 11:22:29 install tmpreaper:amd64 <none> 1.6.14+nmu2 2021-09-14 11:41:16 install nano:amd64 5.4-2 5.4-2 2021-09-14 11:41:17 install tmpreaper:amd64 <none> 1.6.14+nmu2 2021-09-14 11:41:17 install vim-runtime:all 2:8.2.2434-3 2:8.2.2434-3 2021-09-14 11:41:18 install vim:amd64 2:8.2.2434-3 2:8.2.2434-3
在 Debian、Ubuntu 中列出特定日期安装的软件包

正如你在上面的输出中看到的,我已经安装了 tmpreaper, vim纳米 包。

如果启用了日志轮换,则 /var/log/dpkg.log 文件将被删除。 在这种情况下,您可以使用以下命令查看以前的安装日志文件:

$ grep "2021-09-14.*.install " /var/log/dpkg.log.1

如果只想列出包名称,不包括输出中的安装日期/时间和体系结构详细信息,请运行:

$ grep "2021-09-14.*.install " /var/log/dpkg.log | awk '{ print $4 }' | cut -d: -f1

您现在将只看到给定日期已安装的软件包名称:

tmpreaper hello hello tmpreaper hello tmpreaper nano tmpreaper vim-runtime vim
在基于 Debian 的系统中显示特定日期安装的软件包

我们现在已经获得了给定日期所有已安装软件包的名称。

要卸载在某个日期安装的所有软件包,只需添加相应的 apt 命令参数与 xargs 在上一个命令的末尾。

请注意以下命令 不会要求任何用户确认 在删除包之前。 因此,执行以下操作始终是一个好习惯 试运行 在运行实际命令之前验证将删除哪些包。

要模拟(试运行)包移除的过程,只需添加 -s 或者 --simulate 像下面。

$ grep "2021-09-14.*.install " /var/log/dpkg.log | awk '{ print $4 }' | cut -d: -f1 | xargs sudo apt purge -y -s

上面的命令只会模拟删除包的过程,不会删除包。

一旦你发现哪些包将被删除,重新运行上面的命令而不是 -s 或者 --simulate 选项:

$ grep "2021-09-14.*.install " /var/log/dpkg.log | awk '{ print $4 }' | cut -d: -f1 | xargs sudo apt purge -y

如果启用了日志轮换,请改为运行以下命令:

$ grep "2021-09-14.*.install " /var/log/dpkg.log.1 | awk '{ print $4 }' | cut -d: -f1 | xargs sudo apt purge -y
删除在 Linux 中某个日期安装的所有软件包删除在 Linux 中某个日期安装的所有软件包

这次在指定日期安装的软件包将从您的系统中删除。

相关阅读:

  • 如何在 Linux 中查找和删除未使用的包
  • 如何从 CentOS 中的特定存储库中删除已安装的软件包, Fedora
  • 在 Arch Linux 中安装和删除软件包组的简单方法
  • 在 Linux 中删除从源代码安装的程序的简单方法

DebianLinuxLinux 基础Linux 命令Linux howtoLinux Mint 软件包管理在Linux 中删除软件包Ubuntu 在Linux 中卸载软件包