我有一台安装了默认软件包列表的 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>)
但要正确发出这样的命令,可能需要更长而不是安装最小系统并使其运行。