0

在 Centos 6.3 上使用以下选项编译 openldap-2.4.33 后,我无法理解这个错误告诉我什么:

服务器安装为“最小”安装,带有以下插件:

yum install ntp autofs gcc make perl strace nmap tree rpm-build rpm-devel rpmdevtools rpm-libs rpm-python \
openssl openssl-devel perl-CPAN libtool libtool-ltdl-devel.x86_64 libtool-ltdl.x86_64 \
db4.x86_64 nss_db.x86_64 compat-db.x86_64 db4-devel.x86_64 \
tcp_wrappers.x86_64 tcp_wrappers-devel.x86_64 tcp_wrappers-libs.x86_64 \
unixODBC unixODBC-devel mysql-devel cyrus-sasl-devel.x86_64 perl-ExtUtils-Embed.x86_64 \
-y

在 ESX 上将服务器基本安装为 VM 后,我运行以下 ./configure 进行编译和安装:

export CPPFLAGS="-I /usr/lib64/perl5/CORE" 
export LDFLAGS="-L/usr/lib64 -L/usr/lib64/perl5/CORE"
export PERL_CPPFLAGS="`perl -MExtUtils::Embed -e ccopts -I/usr/lib64/perl5/CORE`"
ldconfig
./configure \
--prefix=/ \
--enable-shared   --enable-debug   --enable-dynamic         --enable-syslog      --enable-proctitle  --enable-ipv6   \
--enable-local    --enable-slapd   --enable-cleartext       --enable-crypt       --enable-lmpasswd   --enable-spasswd  \
--enable-modules  --enable-rewrite --enable-rlookups        --enable-slapi       --enable-slp        --enable-wrappers  \
--enable-backends --enable-bdb     --enable-dnssrv          --enable-hdb         --enable-ldap       --enable-mdb  \
--enable-meta     --enable-monitor --enable-null            --enable-passwd      --enable-perl       --enable-relay    \
--enable-shell    --enable-sock    --enable-sql             --enable-overlays    --enable-accesslog  --enable-auditlog  \
--enable-collect  --enable-constraint  --enable-dds         --enable-deref       --enable-dyngroup   --enable-dynlist  \
--enable-memberof --enable-ppolicy     --enable-proxycache  --enable-refint      --enable-retcode    --enable-rwm         \
--enable-seqmod   --enable-sssvlv      --enable-syncprov    --enable-translucent --enable-unique     --enable-valsort      \
--enable-perl     --disable-ndb        --with-cyrus-sasl    --with-threads       --with-tls          --with-yielding-select  \

--with-mp

我采用了基本的 slapd.conf,只添加了我自己的 dn。

当我运行 slaptest 这是我得到的:

slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
5125cefd register_matching_rule: could not locate associated matching rule generalizedTimeMatch for ( 2.5.13.28 NAME 'generalizedTimeOrderingMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
slap_schema_init: Error registering matching rule ( 2.5.13.28 NAME 'generalizedTimeOrderingMatch' SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
5125cefd slaptest: slap_schema_init failed

唯一有某种线索的模式是 ppolicy.schema,但我不知道该怎么做。

4

1 回答 1

1

这些匹配规则是内部的,两者都是在 OpenLDAP 中定义的servers/slapd/schema_init.c,没有条件。 generalizedTimeMatch是首先定义的,然后是 ,它在其“关联”匹配规则generalizedTimeOrderingMatch中引用。generalizedTimeMatch错误源于servers/slapd/mr.c添加匹配规则。

匹配规则构建在一个数组中struct slap_mrule_defs_rec,并按顺序迭代。没有明显的方法会失败。

您的选项和覆盖列表非常完整。叠加层有可能存在一些不兼容或依赖性问题,但我没有看到它(几个叠加层添加到架构中并将这些匹配规则用作某些属性的副作用:dds, ppolicy, accesslog;monitor后端也是如此)。

我最好的猜测是存在一些编译问题,可能是由编译器选项引起的,优化/对齐和/或一些陈旧.o的文件,但我在这里猜测。您不包括实际的制作和安装步骤,同样有可能由于不完整的安装或以前的安装(旧的二进制文件或模式文件)引起一些冲突。

我建议:

make clean
make depend && make && make test

看看会发生什么(make test需要相当长的时间)。它可以工作,那么您可能会考虑安装/usr/local以避免文件冲突。如果这不起作用,那么尝试一个简单configure的选项:

./configure --with-threads --with-tls

然后只添加需要的模块和后端。

于 2013-03-19T22:55:28.283 回答