私は、とりわけPerlとCyrusIMAPで構成されるソフトウェアスタックを維持しています。
Perlは正常に機能しているようで、Cyrus cyradm(perlスクリプト)も正常に機能しています。ただし、sieveshellは実行されず、ここで助けを求める理由があります。
sieveshellを実行すると、次の出力が得られます。
モジュールCyrusの「/usr/local/pozix/perl-5.10.0/lib/site_perl/5.10.0/i686-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.so」を読み込めません: :SIEVE :: manageieve:/usr/local/pozix/perl-5.10.0/lib/site_perl/5.10.0/i686-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.so:未定義のシンボル: PQfinish at /usr/local/pozix/perl-5.10.0/lib/5.10.0/i686-linux-thread-multi/DynaLoader.pm line 203. at ./sieveshellline45コンパイルがrequireat./sieveshelllineで失敗しました45.BEGINが失敗しました-./sieveshell行45でコンパイルが中止されました。
PQfinishはPostgreSQLライブラリの一部です。managesieve.soでlddを実行すると、PGSQLライブラリはリンクされませんが、不足しているライブラリもありません。リストされているlibsasl2ライブラリでlddを実行すると、それも問題ないように見え、PGSQLを使用しますが、managesieve.soにリンクされているライブラリの一部ではないようです。さらに、libsasl2は、他のソフトウェアで使用すると正常に動作します。
これがlddmanagesieve.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 / local / pozix / cyrus-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)
CyrusIMAPの構築中にもコンパイルエラーはありません。これはパスの問題である可能性がありますが、パス出力をどこで調べたりデバッグしたりするのか、次にどこに進むのかがわかりません。
これをグーグルで試したところ、2回ヒットしましたが、解決策がないか、うまくいきませんでした。PerlAUTOLOADが何らかの形で混乱しているのではないかと思います。DBD::Pgも機能しているようです。バージョン2.15.1を使用します。
次にどこに行くべきかについての提案はありますか?そこにPerlの達人はいますか?
解決しました!
./configureは、各サブディレクトリにMakefileを作成します。managesieve.soライブラリは、Perlからの呼び出しで作成されます... IE Perl Makefile.PLは、Makefileになります。アンドリューのアドバイスは、これを追跡するのに非常に役立ちました。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
そして、これはそれを解決しました!