python-ldap 3.4 在 alpine 镜像上安装失败

python-ldap 3.4 installation fails on alpine images

当尝试在 apline docker 映像上安装最新的 python-ldap 3.4 版时(我使用 python:3.9-alpine 作为我的基础映像)python-ldap 失败:

...
/usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lldap_r
    collect2: error: ld returned 1 exit status
    error: command '/usr/bin/gcc' failed with exit code 
...

已安装的依赖项:

apk add --no-cache --virtual .build-deps musl-dev gcc postgresql-dev openldap-dev libffi-dev

也尝试了 build-base 等,但没有成功。

非常感谢任何想法:)

链接到 OpenLDAP 2.5+ 时,python-ldap 包存在问题。开发人员在 https://github.com/python-ldap/python-ldap/issues/432 and https://github.com/python-ldap/python-ldap/issues/445.

中确认了这些问题

经过测试的解决方法是第一期中描述的解决方法:

As a workaround create the file /usr/lib64/libldap_r.so with content INPUT ( libldap.so ). The approach works on all systems that use a GNU ld-compatible linker.

 # cat > /usr/lib64/libldap_r.so << EOF
 INPUT ( libldap.so )
 EOF

您还可以以更简单的方式使用它(例如在 Dockerfiles 中):

echo -n "INPUT ( libldap.so )" > /usr/lib/libldap_r.so