我正在深入dhcpcd
研究行为,我发现了一些让我困惑的东西:dhcpcd
vs 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,系统中的其他任何地方都不会被调用dhcpcd
。dhcpcd5
我猜想这一切一定是有原因的,但经过查找却找不到任何解释。为何dhcpcd
更名dhcpcd5
?另外 - 如果它只systemd
在启动时调用一次,为什么所有链接和替代/同义词?
答案1
答案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
已被删除。因此,现在这是一种“替代”配置,只有一种可能的替代方案。 ☺