Arch Linux 和可选依赖项

Arch Linux 和可选依赖项

我在 Arch Linux 系统上安装了 XChat。每次运行它时,我都会收到以下错误消息:

Python interface loaded
Perl interface loaded
AutoLoad failed for: /usr/lib/xchat/plugins/tcl.so
libtcl8.5.so: cannot open shared object file: No such file or directory

因此,虽然 Python 和 Perl 的插件已正确加载,但 Tcl 插件却未正确加载。事实上,我的系统上安装了python2和软件包,而没有安装软件包。安装即可解决问题。perltcltcl

在安装之前tcl,我得到:

ldd /usr/lib/xchat/plugins/tcl.so | grep tcl
    libtcl8.5.so => not found

安装后tcl,我得到:

ldd /usr/lib/xchat/plugins/tcl.so | grep tcl
    libtcl8.5.so => /usr/lib/libtcl8.5.so (0x00007fceba533000)

看起来这tcl不是 的必需依赖项xchat,而是可选依赖项:

pacman -Qi xchat
...
Optional Deps  : enchant: for spell checking support
                 tcl: for tcl plugin
                 python2: for python plugin
...

为什么会这样呢?也就是说,为什么默认情况tcl下没有安装该软件包xchat?没有就没有xchat坏掉吗tcl

我提交了一份漏洞两年多前,但我从来没有真正理解为什么 Arch Linux 的土地上会出现这样的情况。请注意,虽然这个错误很旧,但几个月以来我只是每天运行这个发行版,所以我是一个 Arch Linux 新手。

我本可以在 Arch Linux 论坛或邮件列表上询问,但我很有兴趣了解其他 Linux 发行版用户的观点。当然,我们也欢迎 Arch Linux 用户。


编辑。

  1. 在未安装的情况下运行 XChat 时收到的错误消息tcl在 GUI 中清晰可见,与显示消息的位置相同。
  2. 我的问题也可以用以下方式重新表述:尽管 XChat 显然是使用脚本构建的--enable-tcl或等效传递给脚本configure的,但为什么可以在不强制依赖于tcl包的情况下安装 XChat?如果一个人不想tcl,他就应该使用--disable-tcl

编辑。我开了一个线在Arch Linux论坛上,但我没有得到满意的答案。于是我检查了Debian和Gentoo,好像他们没有这个问题。

答案1

这主要是一个复杂性以及人们如何选择投入时间的问题。

如果您想要一个不显示与缺少插件库相关的任何警告/错误的 XChat 二进制包,您基本上有两种选择:

  • 仅包含/配置“重要”插件,并添加这些东西所需的硬依赖项
  • 包括每个可用的插件,并添加这些东西所需的硬依赖项

第一种选择会让您得到一个功能很少的 XChat 包。然后您需要一个xchat-perl包、一个xchat-tcl、一个xchat-gtk……所有这些包都需要维护、修补、升级等。这需要做很多工作。

第二个选项为您提供了一个臃肿的 XChat 软件包,其中包含许多其他内容,其中大多数内容根本不会被普通用户使用。对于像 Arch 这样的发行版来说并不是很令人满意。

您可以尝试在这两者之间找到最佳平衡点,但很可能找不到完美的配合。

Arch 开发人员显然对该包所做的就是发布一个常用的插件,而不强迫用户安装依赖项。这(暂时忽略错误消息)实际上对用户来说非常好:那些不想要/不需要 TCL 的人不必安装它来获取 XChat。那些这样做的人只需安装 TCL,XChat TCL 插件就可以工作。
所以这是一个很好的妥协。如果您将来想要使用 TCL 编写 XChat 脚本,您所要做的就是安装 TCL - 您不必担心更新 XChat 或安装另一个软件包。

至于错误消息,它纯粹是装饰性的。可以修复吗?大概。
它是否可以轻松修复,仍然让插件在安装 TCL 后立即开始工作(无需额外的软件包或配置更改、反向依赖检查……):这还不确定。
Arch 开发人员/维护人员是否应该花时间尝试消除这个外观问题?这是有争议的。考虑到该软件可以正常工作,这应该是相当低的优先级。

可以尝试以一种或另一种方式修复它?如果这对你来说足够重要的话,可能是这样。尝试一下:找到更好的方法来处理这些插件和依赖项,并提交错误或功能请求,或者进入适当的论坛/邮件列表来处理此类事情。
开源发行版不会靠魔法变得更好。如果您足够关心此事,请参与其中。

答案2

为什么 XChat 显然是使用 --enable-tcl 或传递给配置脚本的等效项构建的,但可以在不强制依赖 tcl 包的情况下安装?

您正在使用 Arch Linux。来自常见问题解答 -是什么让 Arch 如此独特......:

Arch 包装被设计为最小化,并且选修的包依赖关系永远不会自动安装。相反,用户只是在软件包安装过程中被告知它们的存在,从而使系统更加精简。

XChat包裹详情:

dbus-glib
gtk2
hicolor-icon-theme libnotify
openssl
enchant(可选) - 用于拼写检查支持
python2(可选) - 用于 python 插件
tcl(选修的) - 对于 tcl 插件

编辑:回复您的评论如下:

我不确定我是否明白您的意思...可选依赖项仅用于应用程序的某些特性/功能。如果不使用上述功能,则不需要这些依赖项。当出于各种原因,实际上不可能将包拆分为子模块时,通常会使用可选依赖项(子模块只有非可选依赖项,因为您需要所有这些依赖项才能使用该子模块)模块的功能)。包+子模块的一个例子是埃克塞莱

现在,关于您收到的那个特定错误/警告消息......我认为马特在他的帖子中总结了这一点,我真的没有什么可补充的。

相关内容