我正在尝试配置并安装以下 ldap 服务器本指南。我卡在第 6 步,进行测试。第一次测试失败,并显示以下消息:
cd tests; make test
make[1]: Entering directory `/home/anauser/LDAP_dir/openldap-2.4.37/tests'
make[2]: Entering directory `/home/anauser/LDAP_dir/openldap-2.4.37/tests'
Initiating LDAP tests for BDB...
Cleaning up test run directory leftover from previous run.
Running ./scripts/all for bdb...
>>>>> Executing all LDAP tests for bdb
>>>>> Starting test000-rootdse for bdb...
running defines.sh
Starting slapd on TCP/IP port 9011...
Using ldapsearch to retrieve the root DSE...
Waiting 5 seconds for slapd to start...
Waiting 5 seconds for slapd to start...
Waiting 5 seconds for slapd to start...
Waiting 5 seconds for slapd to start...
Waiting 5 seconds for slapd to start...
Waiting 5 seconds for slapd to start...
./scripts/test000-rootdse: line 66: kill: (27188) - No such process
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
>>>>> Test failed
>>>>> test000-rootdse failed for bdb
(exit 255)
make[2]: *** [bdb-yes] Error 255
make[2]: Leaving directory `/home/anauser/LDAP_dir/openldap-2.4.37/tests'
make[1]: *** [test] Error 2
make[1]: Leaving directory `/home/anauser/LDAP_dir/openldap-2.4.37/tests'
make: *** [test] Error 2
我正在运行 Red Hat Enterprise Linux Server 版本 6.3(Santiago)。我是 linux/ldap 新手,所以任何帮助/建议都非常感谢!
答案1
make test
由于slapd
启动缓慢而失败,最常见的原因是由于赛勒斯 SASL— 具体来说,其默认值1/dev/random
是直接读取初始化期间. 在 Linux/dev/random
上有效遏制以尽量保证良好的高熵数据。您应该能够使用strace -e trace=file -f -p $(pgrep slapd)
或类似方法检查这一点。在非生产环境中,您也可以暂时用 替换/dev/random
以/dev/urandom
确认或否认问题。/dev/random
路径是编译时设置,无法在运行时配置。
然而RHEL(及其衍生产品)自 2003/RHEL 3.x 左右开始修改该默认值(根据cyrus-sasl.spec
SRPM),因此这不应该是原因除非你自己也编译了 Cyrus SASL,因为这也在您链接到的指南中。
这就是一些人质疑为什么(尽管连贯的支持论据往往被忽略)你要自己开发软件的原因之一:有很多陷阱。然而,这是一个很好的学习练习,我推荐它,但在你构建可用于生产的软件之前,你需要阅读大量资料。Linux 从头开始,来自各种 Linux 发行版的补丁和构建脚本/规范文件是一个很好的起点。
- 最高版本 cyrus-sasl-2.1.26;默认值已更改为
/dev/urandom
2.1.27RC(截至 2017 年 7 月)。