Debian buster 中有两个 `dhcpcd` 文件 - 这是为什么?

Debian buster 中有两个 `dhcpcd` 文件 - 这是为什么?

我正在深入dhcpcd研究行为,我发现了一些让我困惑的东西:dhcpcdvs dhcpcd5.。

$ which dhcpcd
/sbin/dhcpcd

dhcpcd只是一个链接:dhcpcd -> /etc/alternatives/dhcpcd,而该链接又指向:dhcpcd -> /sbin/dhcpcd5。所以 - adhcpcd和 a dhcpcd5- 都在sbin.

在我的 Raspberry Pi 上,dhcpcd显然是在启动时/etc/systemd/system/dhcpcd.service.d/wait.conf使用以下命令调用的ExecStart=/usr/lib/dhcpcd5/dhcpcd -q -w: AFAIK,系统中的其他任何地方都不会被调用dhcpcddhcpcd5

我猜想这一切一定是有原因的,但经过查找却找不到任何解释。为何dhcpcd更名dhcpcd5?另外 - 如果它只systemd在启动时调用一次,为什么所有链接和替代/同义词?

答案1

这都是历史原因造成的。曾经有一个dhcpd包裹它与 集成,每个接口ifupdown运行一个实例。dhpcd

该项目的版本 5 改变了行为,用单个实例处理所有接口。为了简化升级,它被打包了作为一个全新的包;这允许管理员并行拥有两个版本,并根据他们认为合适的方式处理配置升级。

dhcpcd非 systemd 管理的系统上的 init 脚本仍然使用符号链接。

答案2

这就是正在运行的“替代”系统。在这个系统中,程序的常规名称是一个符号链接,/etc/alternatives/而实际的程序二进制文件是其他地方的不同名称的文件。

您可以在设置为使用“替代”系统的其他程序中看到这一点。例如: 虽然/usr/bin/vim是 VIM 的常规名称,但“替代”系统允许在之间切换的实际程序二进制文件有多种/usr/bin/vim.tiny/usr/bin/vim.nox, 等等。

在这种特殊情况下,曾经有两种替代方案,/sbin/dhcpcd5包裹dhcpcd5并由/sbin/dhcpcd3提供包裹dhcpcd。在其软件包的安装后维护者脚本中(dhcpcd5 DHCPCD)他们各自使用update-alternatives“替代”系统dhcpd在常规名称处创建符号链接,选择安装的最高优先级底层二进制文件。

正如 M. Kitt 指出的那样,提供的软件包dhcpcd3已被删除。因此,现在这是一种“替代”配置,只有一种可能的替代方案。 ☺

相关内容