Устранить ошибку GCC при установке python-ldap на сервере Redhat Enterprise Server

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

Если бы только там был кто-то, кто мог бы мне помочь!

2 ответов


но подождите! Я могу помочь вам, потому что я понял это после обильного количества проклятий!

Шаг 1: Убедитесь, что необходимые компоненты установлены

по словам docs в вашей системе должны быть установлены библиотеки 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 все еще не работает,возможно, установка.cfg script ищет в неправильном месте необходимые файлы библиотеки. Итак, давайте найдем где они существуют в нашей системе.

этого:

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.cfg файл для python-ldap

  • когда команда pip install терпит неудачу, она оставляет после себя build каталог внутри базового каталога интерпретатора python (там же, где вы найдете /bin, / include, / lib и /человек.
  • внутри 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 снова. Процесс установки будет смотреть на вашу установку обновления.cfg и должен установить без каких-либо дополнительных проблем.


альтернатива шагу 3 в ответ eikonomega:

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

затем:

$ pip install python-ldap

отсутствие треснуть-раскройте установку.cfg так!