LDAP 2.5 破坏了 Debian 12 上的 SQL Server

LDAP 2.5 破坏了 Debian 12 上的 SQL Server

由于断电而恢复,现在 SQL Server 无法启动,因为

/opt/mssql/bin/sqlservr: error while loading shared libraries: liblber-2.4.so.2: cannot open shared object file: No such file or directory

我找到了这些文件/usr/lib/x86_64-linux-gnu并尝试从 SQL Server 想要的文件创建符号链接到退出的文件,但它并没有被愚弄:

/opt/mssql/bin/sqlservr: /lib/x86_64-linux-gnu/libldap_r-2.4.so.2: version `OPENLDAP_2.4_2' not found (required by /opt/mssql/bin/sqlservr)

似乎我安装了 LDAP 库版本 2.5,而 SQL Server 需要 2.4

# apt show libldap-common
Package: libldap-common
Version: 2.5.13+dfsg-5
Priority: optional
Section: libs
Source: openldap
Maintainer: Debian OpenLDAP Maintainers <[email protected]>
Installed-Size: 94.2 kB
Replaces: libldap-2.4-2 (<< 2.4.44+dfsg-1)
Homepage: https://www.openldap.org/
Tag: role::shared-lib
Download-Size: 29.3 kB
APT-Manual-Installed: yes
APT-Sources: http://mirror.ox.ac.uk/debian bookworm/main amd64 Packages
Description: OpenLDAP common files for libraries
 These are common files for the run-time libraries for the OpenLDAP
 (Lightweight Directory Access Protocol) servers and clients.

猜测一个可能的解决办法是降级——这可能吗?我看不到任何其他可用版本

# apt list -a libldap-common
Listing... Done
libldap-common/stable,stable,now 2.5.13+dfsg-5 all [installed]

这似乎是罪魁祸首:

# grep ldap /var/log/dpkg.log
2023-08-21 18:50:42 status installed libldap-2.4-2:amd64 2.4.57+dfsg-3+deb11u1
2023-08-21 18:50:42 remove libldap-2.4-2:amd64 2.4.57+dfsg-3+deb11u1 <none>
2023-08-21 18:50:42 status half-configured libldap-2.4-2:amd64 2.4.57+dfsg-3+deb11u1
2023-08-21 18:50:42 status half-installed libldap-2.4-2:amd64 2.4.57+dfsg-3+deb11u1
2023-08-21 18:50:42 status config-files libldap-2.4-2:amd64 2.4.57+dfsg-3+deb11u1
2023-08-21 18:50:42 status not-installed libldap-2.4-2:amd64 <none>
2023-08-27 10:20:03 install libldap-dev:amd64 <none> 2.5.13+dfsg-5
2023-08-27 10:20:03 status half-installed libldap-dev:amd64 2.5.13+dfsg-5
2023-08-27 10:20:03 status unpacked libldap-dev:amd64 2.5.13+dfsg-5
2023-08-27 10:20:03 configure libldap-dev:amd64 2.5.13+dfsg-5 <none>
2023-08-27 10:20:03 status unpacked libldap-dev:amd64 2.5.13+dfsg-5
2023-08-27 10:20:03 status half-configured libldap-dev:amd64 2.5.13+dfsg-5
2023-08-27 10:20:03 status installed libldap-dev:amd64 2.5.13+dfsg-5
2023-08-27 10:23:13 install ldap-utils:amd64 <none> 2.5.13+dfsg-5
2023-08-27 10:23:13 status half-installed ldap-utils:amd64 2.5.13+dfsg-5
2023-08-27 10:23:13 status unpacked ldap-utils:amd64 2.5.13+dfsg-5
2023-08-27 10:23:13 configure ldap-utils:amd64 2.5.13+dfsg-5 <none>
2023-08-27 10:23:13 status unpacked ldap-utils:amd64 2.5.13+dfsg-5
2023-08-27 10:23:13 status half-configured ldap-utils:amd64 2.5.13+dfsg-5
2023-08-27 10:23:13 status installed ldap-utils:amd64 2.5.13+dfsg-5

可以撤销吗?

更新

Ubuntu 22.04 上也有同样的问题。

答案1

你不能只是放入不同版本的库;二进制文件不是这样工作的。

那么,sqlservr 是专有的东西,对吧?它需要携带它需要的所有库。如果它依赖于系统提供的库,那么作者(微软)需要确保它与上游保持同步。

因此,由于 Microsoft 似乎没有这样做,因此您无法任意更新安装了 mssql 的系统。向 Microsoft 提出支持案例,或者如果尚未安装最新版本的 mssql,请安装该支持案例。

与此同时,通常的解决方案只是建立一个具有明确、积极支持的平台的容器,在其中只安装 mssql,将现有数据作为卷导入到该容器中,导出用于连接的网络端口和/或 UNIX 套接字。与数据库通信并像以前一样在同一台机器上运行它。

可以撤销吗?

我不知道——除非仍然存在所有旧版本软件的软件包文件,并且在降级 ldap 时还需要降级。这可能是最糟糕的解决方案。但是您确实拥有数据库服务器上所有内容的备份,不是吗?

答案2

这让它运行起来:

# wget http://ftp.uk.debian.org/debian/pool/main/o/openldap/libldap-2.4-2_2.4.57+dfsg-3+deb11u1_amd64.deb
# apt install ./libldap-2.4-2_2.4.57+dfsg-3+deb11u1_amd64.deb

相关内容