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

Tim*_*Tim 2 ubuntu debian dpkg package-management alternatives

来自为什么我的 Ubuntu 14.04 bash 上的默认 shell 是这样的?:

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

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

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

谢谢。

Ste*_*itt 5

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

\n\n

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

\n\n

bash不使用和dash\xe2\x80\x99update-alternatives来管理的原因/bin/sh很简单,当启用该可能性时,update-alternatives\xe2\x80\x99 不被认为足够强大,无法依赖于像/bin/sh. 如果出现任何问题并/bin/sh最终被删除或指向不存在的文件,系统将变得毫无用处且难以修复;它甚至无法正常启动\xe2\x80\x99...因此bashdash请务必小心以确保其/bin/sh始终可用。这涉及到在预安装 \xe2\x80\x9cscript\xe2\x80\x9d (实际上是一个二进制文件,以避免预依赖循环)中进行一些仔细的处理,涉及 的技巧,dpkg-divert以及他们帖子中的一些最后的处理- 安装脚本。你\xe2\x80\x99将在错误#34717(十九年前)中找到所有这一切的设计细节。

\n\n

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

\n