我在 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
正如你在上面的输出中看到的,我已经安装了 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
我们现在已经获得了给定日期所有已安装软件包的名称。
要卸载在某个日期安装的所有软件包,只需添加相应的 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 中查找和删除未使用的包
- 如何从 CentOS 中的特定存储库中删除已安装的软件包, Fedora
- 在 Arch Linux 中安装和删除软件包组的简单方法
- 在 Linux 中删除从源代码安装的程序的简单方法
DebianLinuxLinux 基础Linux 命令Linux howtoLinux Mint 软件包管理在Linux 中删除软件包Ubuntu 在Linux 中卸载软件包