如何在 Bullseye 上安装 libldap-2.5.0?

如何在 Bullseye 上安装 libldap-2.5.0?

我正在 Bullseye 机器上设置由 sssd 和 AD 支持的登录。根据错误日志判断,我似乎遇到了ssd 问题 5720。这是因为 libldap 和 sssd 之间的要求不匹配。Sssd 需要 cldap 支持,而 libldap 不支持。

摘自 /var/log/sssd/sssd_.log

[sss_ldap_init_sys_connect_done] (0x0020): ldap_init_fd failed: Bad parameter to an ldap routine. [26][cldap://*****:389] 
[sdap_sys_connect_done] (0x0020): sdap_async_connect_call request failed: [5]: Input/output error.

我认为简单的解决方案是安装反向移植版本 libldap-2.5.0。不幸的是,它会安装在普通 Bullseye 版本 libldap-2.4.2 旁边。而不是替换它。我无法删除 libldap-2.4.2,因为这会删除大量依赖包。

我们的机器正在跟踪 Debian Stable。我不希望它们只跟踪这一项的测试。

我应该如何升级 libldap?

答案1

我以为简单的解决方案是安装反向移植版本 libldap-2.5.0。不幸的是,它安装在普通 Bullseye 版本 libldap-2.4.2 旁边。而不是替换它。

这是经过深思熟虑的,因为这两个版本的库名称不同——libldap-2.4.so.2在旧版本中,libldap.so.2从 2.5.x 开始,因此任何最初为旧 2.4.x 库编译的程序都找不到新版本。(旧版本也有两个变体,大多数程序使用可重入的libldap_r-2.4.so.2。)

(不同的 soname 也往往表明库 ABI 中存在实质性差异,例如*.so.2可能是*.so.3因为函数采用不同的参数,或者结构具有不同的字段;尝试将库强行塞入不同的 ABI 版本通常迟早会导致崩溃或其他损坏。)

这意味着 Debian 并排使用两个库的方法正是您所需要的这里 – SSSD 是所有你需要重建的,而如果 2.5 包替换了 2.4 包,你将必须安装重建版本的全部依赖包。(这就是在进行就地升级的发行版中发生迁移的方式,例如 Arch Linux - 他们必须重建所有依赖包并将它们一次性发布。)

相关内容