Bash 脚本用于记录所有最近的 apt-get 安装和位置

Bash 脚本用于记录所有最近的 apt-get 安装和位置

如果类似的事情已经存在,我很抱歉,但在我的调查中我没有发现任何证据证明它确实存在。

我想要的是:一个我可以编写的“监控”类型的脚本,在 apt-get 安装一个或多个(强调是更多)软件包之前我会“激活”它,然后在完成后“停用”它。它将“记录”所有已安装的内容,如果我对安装不满意,它将使用一个命令删除所有安装的所有痕迹。

我想这样做是因为我是一名程序员,为新语言设置编程环境可能会出现错误(或充斥着我自己的用户错误)。例如,go lang 给我带来了麻烦,但 ruby​​/rails 则相当轻松,等等

现在,据我了解,apt-get purge 和 autoremove 在清理系统中的软件包方面做得相当不错,但我认为我的想法在连续安装许多软件包时仍然有用。

我的问题是:我应该如何最有效地完成这一任务,速度和逻辑性是首要考虑因素。

我发现的所有(甚至看似糟糕的)实现方法:

--inotifywait:对于系统范围内的使用来说是不可想象的,只能应用于“流行”目录,但会使文件漏网

--diff:与上面差不多。

--git:使用 git 保存可以回滚的“图片”。与上述问题相同,但程度较轻(在我看来。如果有其他问题,请纠正我)

-- 记录已安装的软件包名称(某种方式)/简单计算已安装软件包的数量,然后进入 /var/cache/apt 并使用 apt-get remove 等。这里通常会有什么东西被遗漏吗(通常)?

我按照我的想法的顺序列出了它们,并结合了我的研究,以便您可以看到它们演变成更合理的解决方案。

所以我来这里主要是寻求建议,因为我完全可以熟练地编写 bash 脚本,但我以前从未需要过,所以我寻求更明智的建议。说实话,这既是为了好玩,也是为了学习。

谢谢!

答案1

对于任何有类似目标的人来说,

我最终将 /var/log/apt/history.log 保存在两个文本文件中,一个在安装“会话”之前,一个在安装“会话”之后。此外,为了允许可能的扩展,我将 diff 的输出保存到一个文件中,该文件仅包含新安装软件包的软件包名称(这可以允许使用交互式命令行选项,该选项将使用 (Y/n) 删除选项循环遍历每个软件包,而不是批量删除)

为了让其他人走上正确的道路:sed/grep、diff、cut、tail、xargs,以及使用 > 和 >> 将输出发送到文件。以及基本的 bash 脚本。

相关内容