“更新替代方案”与“dpkg 重新配置”

“更新替代方案”与“dpkg 重新配置”

为什么我的 Ubuntu 14.04 bash 上使用默认 shell?:

/bin/sh在 Debian 衍生版本上,您可以通过以 root 身份运行dash来默认在 Dash 和 Bash 之间切换dpkg-reconfigure

update-alternatives两者都dpkg-reconfigure可以用于更改符号链接链接到的可执行文件,这是否正确/bin/

如果是,为此目的,update-alternatives和之间有什么区别dpkg-reconfigure

谢谢。

答案1

update-alternatives确实可以用来管理 下的符号链接/bin,甚至其他任何地方;这就是它的目的。它需要协作包或手动设置——需要注册各种替代方案。

dpkg-reconfigure根本不具体,它只运行包的安装后维护程序脚本。因此它的行为完全依赖于它用来配置的特定包。在bashanddash的情况下,维护者脚本处理/bin/sh符号链接,所以是的,在这种特殊情况下dpkg-reconfigure用于管理符号链接。

不使用bash和来管理的原因很简单,当启用该可能性时,不被认为足够强大,无法依赖于像.如果dashupdate-alternatives/bin/shupdate-alternatives/bin/sh任何事物一旦出现错误并/bin/sh最终被删除或指向不存在的文件,系统就会变得毫无用处且难以修复;它甚至无法正常启动...因此bashdash务必小心以确保其/bin/sh始终可用。这涉及到预安装“脚本”(实际上是二进制文件,以避免预依赖循环)中的一些仔细处理、涉及的技巧dpkg-divert以及安装后脚本中的一些最后的处理。您将在以下位置找到所有这些设计的详细信息错误#34717(十九年前)。

要了解系统中的哪些二进制文件是使用替代方案处理的,哪些是使用转移(来自维护者脚本)处理的,您可以使用相应的工具,特别是dpkg-divert --list它会列出所有转移。因为update-alternatives --list您需要知道您感兴趣的替代组,但替代组很容易发现,因为它们都是指向/etc/alternatives.

答案2

update-alternatives命令要求所有替代项注册到它,以便它管理哪个替代项将获得 /bin 中指向的符号链接。

替代系统非常灵活,因为它可以一次管理多个符号链接,并且可以处理多个替代实现,可能会给予它们权重,以帮助决定在安装两个以上时选择哪一个,并且还会优雅地选择一个如果该权重被卸载,则具有下一个最高权重。

使用的方案使用dpkg-reconfigure dashdpkg 的转移系统,其中一个包(bash)发布/bin/sh,但其他包可以“转移”它以覆盖其实现。

dpkg 的转移系统不限于符号链接(也可以转移文件),并且不需要主包发送原始符号链接(或文件)来修改以采用诸如update-alternatives.

转移系统不像替代系统那么灵活,因为它通常依赖于要配置的软件包将自己置于转移的顶部,并且在许多情况下根本不进行任何配置(只需安装新的软件包就会自动转移文件)来自先前安装的软件包,无需配置。)这些限制也使得使用 dpkg 的转移系统来实现两个以上的替代方案变得更加困难。

相关内容