`apt remove` 除了 nginx、其依赖项和对运行系统至关重要的软件包之外的所有内容

`apt remove` 除了 nginx、其依赖项和对运行系统至关重要的软件包之外的所有内容

我有一台安装了默认软件包列表的 Ubuntu 服务器。我想卸载除 nginx 之外的所有软件包、其依赖项以及启动到 tty 并运行 nginx 所需的任何其他软件包。

有没有办法做到这一点,而不需要手动判断要删除哪些包?

另外:我这样做的原因是,为了防止 nginx 等受到攻击,系统中安装的工具尽可能少。

编辑:我还需要 sshd 和 sudo...也许一个好的答案会指出我可能需要的其他东西。

答案1

系统不会允许你sudo不战而胜地删除,就像它不会让你删除内核或apt工具本身一样。一个问题是,你的问题混淆了两个问题:(1) 作为 apt 依赖项,nginx 所需的最低软件包集是什么;(2) 正常运行的系统所需的合理最低软件包集是什么。

例如,nginx 可能不依赖 libapt 上的 sshd,但你不想从远程服务器中删除 ssh。我实际上认为 @tigran 的答案是最安全的最快。你可以在几分钟内安装一个最小系统,而这个问题已经在这里半个小时了。

除此之外,我建议它aptitude具有非常强大的搜索和匹配选项。您可以编写如下命令行:

aptitude purge $(aptitude search <not-depended-on-by-nginx> and <not-essential>)

但要正确发出这样的命令,可能需要更长而不是安装最小系统并使其运行。

相关内容