我想创建一个基于 Debian 的 DNS 服务器来运行 BIND9。有大量有关包依赖性的信息。但这都是关于安装时如何安装所需的软件包package-x.y.z
。但是,我找不到有关如何找出所有不需要的软件包并卸载它们的任何信息。package-x.y.z
我想要做的是得到这个问题的答案:成功运行 BIND9 所需的绝对最小软件包集是什么,这样我就可以卸载(或首先不安装)所有软件包运行 BIND9 不需要(直接或间接)吗?
例如,很明显named
/bind
需要网络连接,否则它无法提供入站 DNS 查询,因此我们知道将需要 IP 网络的所有软件包和驱动程序。我们还知道我们必须有 NTP,因为它具有非常重要的计时功能,尽管named
/bind
进程可能不直接需要或使用该功能,但为了执行 DNSSEC 和其他 PKI 任务,绝对间接需要该功能。显然,我们还需要本地用户身份验证以及运行 SSH 服务以允许服务器管理的一切。
也许我真的应该问 - 我可以构建的绝对最低限度的 Debian 安装是什么,我只需要安装 BIND9?
对于独立硬件服务器或 VM:
步骤 1.) 安装 Debian “基本系统”,仅此而已。这应该会自动为您提供一个极简的系统,该系统仍然可以自行启动并通过互联网连接进行自我更新,我认为这两者都是任何现代独立安装的基本要求。
完成此步骤后,您可以运行
apt list --installed
以查看当前状态。任何标记为的东西[installed,automatic]
都在那里,因为其他东西取决于它。请注意包装上仅标记的[installed]
。如果删除
automatic
导致依赖的非包,包管理将建议automatic
卸载不再依赖的包。步骤 2.)
apt install bind9
并检查类型为 的任何依赖项Recommends:
。我实际上更喜欢aptitude
这种简约安装工作的包管理 UI - 它可以在实际安装任何东西之前以正常和反向方式显示依赖关系(即“此包依赖于/由这些其他包推荐/建议”)。步骤 3.) 看看您是否需要其他东西,例如,
openssh-server
如果您需要 SSH 访问,则需要软件包,或者用于 DNS 区域文件或日志管理的工具。步骤 4.) 你就完成了!
为了构建容器化服务,通常有一个容器构建工具(
docker-compose
或类似工具),您可以在其中指定所需的内容(即bind9
),然后它可以自动填充任何依赖项。最终的容器应该包含满足您规定的要求所需的一切,仅此而已。