我维持除其他事项由Perl和赛勒斯IMAP的软件堆栈。

Perl的似乎是工作的罚款和Cyrus cyradm(Perl脚本)的作品也没关系。然而,sieveshell将不执行,为寻求帮助,在这里的原因。

当我运行sieveshell,我得到后续输出:

  

无法加载“/usr/local/pozix/perl-5.10.0/lib/site_perl/5.10.0/i686-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.so”的模块赛勒斯::筛:: managesieve:/usr/local/pozix/perl-5.10.0/lib/site_perl/5.10.0/i686-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.so:未定义的符号:PQfinish在/usr/local/pozix/perl-5.10.0/lib/5.10.0/i686-linux-thread-multi/DynaLoader.pm线203。    在./sieveshell线45   编译失败在./sieveshell 45行要求。   BEGIN失败 - 编译中止在./sieveshell线45

PQfinish是PostgreSQL的库的一部分。如果我在managesieve.so运行LDD时,PGSQL库不是在链接但是,有没有遗漏任何库。如果我对上市libsasl2库运行LDD,它看起来也没关系,它确实使用PGSQL但它显然不是挂managesieve.so库的一部分。此外,libsasl2被其它软件一起使用时工作正常。

下面是LDD managesieve.so

linux-gate.so.1 =>  (0xffffe000)
libdb-4.4.so => /lib/libdb-4.4.so (0xb7f8a000)
libsasl2.so.2 => /usr/local/pozix/cyrus-sasl/lib/libsasl2.so.2 (0xb7f74000)
libssl.so.0 => /usr/lib/libssl.so.0 (0xb7f33000)
libcrypto.so.0 => /usr/lib/libcrypto.so.0 (0xb7df6000)
libc.so.6 => /lib/libc.so.6 (0xb7caa000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7c92000)
libdl.so.2 => /lib/libdl.so.2 (0xb7c8e000)
libresolv.so.2 => /lib/libresolv.so.2 (0xb7c7b000)
/lib/ld-linux.so.2 (0xb80aa000)

LDD USR /本地/ pozix /赛勒斯-SASL / LIB / libsasl2.so.2

linux-gate.so.1 =>  (0xffffe000)
libdl.so.2 => /lib/libdl.so.2 (0xb7f0a000)
libresolv.so.2 => /lib/libresolv.so.2 (0xb7ef7000)
libc.so.6 => /lib/libc.so.6 (0xb7dab000)
/lib/ld-linux.so.2 (0xb7f34000)

有赛勒斯IMAP建设期间没有编译错误任一。我怀疑这可能是一个路径问题,但不知道在哪里看或调试路径输出或者在下次再去这一点。

试着用搜索引擎,这和有一对夫妇的点击,但他们要么没有解决方案或我没有工作。我怀疑Perl的AUTOLOAD在某种程度上混淆。 DBD :: PG似乎是工作为好;使用版本2.15.1。

这是下一步去哪里有什么建议?任何Perl高手在那里?

解决!

./配置构建生成文件中的每个子目录。该managesieve.so库利用Perl ...即调用创建Perl的Makefile.PL产生Makefile文件。安德鲁的提醒在跟踪下来极大的帮助。在生成文件有以下行:

EXTRALIBS = -ldb-4.4 -L/usr/local/pozix/cyrus-sasl/lib -lsasl2 -lssl -lcrypto 
LDLOADLIBS = -ldb-4.4 -L/usr/local/pozix/cyrus-sasl/lib -lsasl2 -lssl -lcrypto 

哪些我更新如下:

EXTRALIBS = -ldb-4.4 -L/usr/local/pozix/cyrus-sasl/lib -L/usr/local/pozix/pgsql/lib -lsasl2 -lssl -lcrypto -lpq

LDLOADLIBS = -ldb-4.4 -L/usr/local/pozix/cyrus-sasl/lib -L/usr/local/pozix/pgsql/lib -lsasl2 -lssl -lcrypto -lpq

这解决了它!

有帮助吗?

解决方案

听起来你需要重新编译筛共享库和包括在 -lPGSql (或其他)。是否有一个配置你需要一个'--with-Postgres的加入脚本?如果没有,则可能必须手动编辑Makefile(或Makefile.PL,或Build.PL)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top