我正在尝试通过pip安装GSSAPI模块,但收到此错误,我不知道如何解决。

Could not find main GSSAPI shared library.  Please try setting GSSAPI_MAIN_LIB yourself or setting ENABLE_SUPPORT_DETECTION to 'false'

我需要它才能在python 2.6上进行ldap3身份验证。

最佳答案

摘要,对于急躁的

$ sudo ln -s /usr/bin/krb5-config.mit /usr/bin/krb5-config
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 /usr/lib/libgssapi_krb5.so
$ sudo apt-get install python-pip libkrb5-dev
$ sudo pip install gssapi

现在,详细信息...

我有一个使用Heimdal Kerberos的Debian系统。我将指导您完成为我准备的工作。希望这也可以对其他人有所帮助。

问题1-krb5-config:找不到命令

gssapi的setup.py使用krb5-config命令找到要链接的GSSAPI库(请参阅here)。由于我的系统是使用Heimdal而不是MIT Kerberos安装的,因此可执行命令已重命名为krb5-config.mit,因此setup.py忽略了它。
$ krb5-config --libs gssapi  # doesn't work
bash: krb5-config: command not found

我创建了一个符号链接(symbolic link),以使其可用于安装:
$ sudo ln -s /usr/bin/krb5-config.mit /usr/bin/krb5-config
$ krb5-config --libs gssapi  # does work
-L/usr/lib/x86_64-linux-gnu/mit-krb5 -Wl,-z,relro -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err

问题2-libgssapi_krb5.so:无法打开共享库文件:没有这样的文件或目录
setup.py正在/usr/lib中寻找要链接的gssapi库。在Debian Jesse中,大多数库现在都保存在/usr/lib/x86_64-linux-gnu中。同样,符号链接(symbolic link)可以解决此问题:
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 /usr/lib/libgssapi_krb5.so

问题3-错误:未知类型名称“gss_key_value_set_desc”

构建失败,因为它无法识别库中的符号。这样做的原因是它无法获取正确的头文件。愚蠢的我,我忘了为krb5 header 添加-dev包。使用apt-get修复此问题:
$ sudo apt-get install libkrb5-dev

最后-安装gssapi

现在我们应该已经准备就绪。
$ sudo pip install gssapi

如果要整理,可以删除指向krb5-config.mit命令的符号链接(symbolic link):
$ sudo rm /usr/bin/krb5-config

关于python - 如何安装gssapi python模块?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30896343/

10-09 19:27