Frage

Ich behaupte, einen Software-Stack, bestehend aus Perl und Cyrus IMAP unter anderem.

Perl scheint zu funktionieren gut und Cyrus cyradm (ein Perl-Skript) zu sein Werk auch in Ordnung. Allerdings wird sieveshell nicht ausführen und der Grund hier, um Hilfe zu bitten.

Als ich sieveshell laufen, bekomme ich die Folge Ausgabe:

  

kann nicht geladen werden ‚/usr/local/pozix/perl-5.10.0/lib/site_perl/5.10.0/i686-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.so‘ für Modul Cyrus :: SIEVE :: managesieve: /usr/local/pozix/perl-5.10.0/lib/site_perl/5.10.0/i686-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.so: undefiniertes Symbol: PQfinish bei /usr/local/pozix/perl-5.10.0/lib/5.10.0/i686-linux-thread-multi/DynaLoader.pm Leitung 203.    bei ./sieveshell Leitung 45   Compilation gescheitert erfordert bei ./sieveshell Linie 45.   BEGIN fehlgeschlagen -. Kompilierung abgebrochen bei ./sieveshell Zeile 45

PQfinish ist Teil der PostgreSQL-Bibliotheken. Wenn ich ldd auf managesieve.so ausführen, werden die PGSQL Libs nicht jedoch verbunden sind, gibt es entweder keine fehlenden Bibliotheken. Wenn ich ldd auf libsasl2 Bibliothek aufgelistet laufen, sieht es auch in Ordnung und es tut PGSQL verwenden, aber es ist offensichtlich nicht Teil der Bibliothek managesieve.so verknüpft. Außerdem wird libsasl2 feine arbeiten, wenn von anderer Software verwendet.

Hier ist 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 / 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)

Es sind keine Übersetzungsfehler beim Bau von Cyrus IMAP entweder. Ich vermute, dass dies ein Weg Problem sein könnte, aber nicht sicher, wo sie suchen müssen oder debuggen den Pfad Ausgang oder wohin sie gehen weiter zu diesem Thema.

Versuchte für diese googeln und bekam ein paar Hits, aber sie hatten entweder keine Lösung oder nicht für mich arbeiten. Ich vermute, die Perl AUTOLOAD in irgendeiner Weise verwirrt ist. DBD :: Pg erscheint als gut zu funktionieren; mit der Version 2.15.1.

Alle Vorschläge, wohin gehen wir? Jedes Perl Gurus da draußen?

GELÖST!

./ configure baut die Makefiles in jedem Unterverzeichnis. Die managesieve.so Bibliothek wird mit einem Aufruf von Perl erstellt ... I.E. Perl Makefile.PL in einem Makefile zur Folge hat. Andrew beraten half immens dies bei der Verfolgung. In der Datei Makefile gibt es die folgenden Zeilen:

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 

Was ich aktualisiere zu lesen:

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

Und das löste es!

War es hilfreich?

Lösung

Klingt wie Sie das Sieb gemeinsam genutzte Bibliothek neu kompilieren müssen und schließen Sie die -lPGSql (oder was auch immer). Gibt es ein configure Skript, das Sie brauchen ein '--with-postgres' hinzufügen? Wenn nicht, können Sie manuell auf das Makefile bearbeiten (oder Makefile.PL oder Build.PL).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top