10

Python-LDAP + Redhat = 咬牙切齿

最近,我花了几个小时试图将 python-ldap(通过 pip)安装到 Redhat Enterprise 服务器上。

这是我会收到的错误消息(看起来很熟悉?):

Modules/constants.c:365: error: ‘LDAP_CONTROL_RELAX’ undeclared (first use in this function) error: command 'gcc' failed with exit status 1

如果只有那里有人可以帮助我!

4

2 回答 2

19

可是等等!我可以帮助你,因为我经过大量的诅咒后才弄清楚!

步骤 1:验证先决条件是否已安装

根据文档,您必须在系统上安装 OpenLDAP 库。在我编写库的版本要求时,>= 2.4.11

要查看您的系统上是否安装了此类库,请运行以下命令:yum list installed openldap*

以下是我系统的输出,作为您可能看到的示例:

PACKAGE                                                         VERSION
openldap24-libs.i386                                            2.4.23-5.el5                                     
openldap24-libs.x86_64                                          2.4.23-5.el5                                     
openldap24-libs-devel.i386                                      2.4.23-5.el5                                     
openldap24-libs-devel.x86_64                                    2.4.23-5.el5

所以,就我而言,我已经安装了库。 如果您不只是运行:

sudo yum install openldap24-libs-devel  
sudo yum install openldap24-libs

第 2 步:这些软件包安装在哪里?

如果软件包已经安装并且 pip 仍然失败,那么 setup.cfg 脚本可能在错误的位置寻找所需的库文件。所以,让我们找出它们在我们系统中的位置。

做这个:

rpm -ql openldap24-libs
rpm -ql openldap24-libs-devel

你应该得到这样的东西(我已经缩写了这个,所以我们可以更容易地看到涉及的目录)。

rpm -ql openldap24-libs
/usr/lib64/...
/usr/lib/...

rpm -ql openldap24-libs-devel
/usr/include/openldap24/...
/usr/lib/openldap24/...
/usr/lib64/openldap24/...

第 3 步:检查 Pip 的 setup.cfg 文件是否有 python-ldap

  • 当 pip install 命令失败时,它会在 python 解释器的基本目录中留下一个build目录(您将在同一位置找到 /bin、/include、/lib 和 /man。
  • 在该build目录中,您应该找到“python-ldap/setup.cfg”。
  • 在您喜欢的编辑器中打开文件。

您应该在文件顶部看到:

[_ldap]
library_dirs = /opt/openldap-RE24/lib /usr/lib
include_dirs = /opt/openldap-RE24/include /usr/include/sasl /usr/include

显然,这是错误的。 将您在第 2 步中发现的目录附加到当前列出的目录前面,以便您最终得到如下内容:

[_ldap]
library_dirs = /usr/lib64/openldap24 /usr/lib/openldap24 /usr/lib64 /opt/openldap-RE24/lib /usr/lib
include_dirs = /usr/include/openldap24 /opt/openldap-RE24/include /usr/include/sasl /usr/include

第 4 步:重新运行安装和利润!

保存文件后,您可以简单地pip install python-ldap再次运行。安装过程将查看您的更新 setup.cfg 并且应该安装没有任何进一步的问题。

于 2013-09-12T14:24:27.510 回答
3

eikonomega 回答中步骤 3 的替代方法:

$ export CPATH=/usr/include/openldap24/
$ export LIBRARY_PATH=/usr/lib64/openldap24/

然后:

$ pip install python-ldap

无需破解 setup.cfg!

于 2015-01-25T00:45:50.307 回答