Domanda

I mantenere uno stack software costituito da Perl e Cyrus IMAP tra le altre cose.

Perl sembra funzionare bene e Cyrus cyradm (uno script perl) funziona bene anche. Tuttavia, sieveshell non verrà eseguito e la ragione per chiedere aiuto qui.

Quando eseguo sieveshell, ottengo l'uscita segue:

  

Impossibile caricare '/usr/local/pozix/perl-5.10.0/lib/site_perl/5.10.0/i686-linux-thread-multi/auto/Cyrus/SIEVE/managesieve/managesieve.so' per modulo 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: simbolo indefinito: PQfinish a /usr/local/pozix/perl-5.10.0/lib/5.10.0/i686-linux-thread-multi/DynaLoader.pm linea 203.    alla riga 45 ./sieveshell   Compilazione fallito nel richiedere alla linea ./sieveshell 45.   BEGIN fallito -. Compilation interrotta in linea ./sieveshell 45

PQfinish fa parte delle librerie di PostgreSQL. Se corro ldd su managesieve.so, le librerie di PGSQL non sono collegati in tuttavia, non ci sono librerie mancanti sia. Se corro ldd su libreria libsasl2 elencati, sembra OK troppo e lo fa usare PGSQL ma non è apparentemente parte della libreria legata al managesieve.so. Inoltre, libsasl2 sta lavorando bene quando viene utilizzato da altri software.

Ecco 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)

Non ci sono errori di compilazione durante la costruzione di Cyrus IMAP sia. Ho il sospetto che questo potrebbe essere un problema di percorso, ma non è sicuro dove guardare o eseguire il debug l'uscita percorso o dove andare avanti su questo.

Ho provato googling per questo e ha ottenuto un paio di colpi ma o non ha avuto soluzione o non ha funzionato per me. Ho il sospetto che il Perl AUTOLOAD è confuso in qualche modo. DBD :: Pg sembra funzionare pure; utilizzando la versione 2.15.1.

Tutti i suggerimenti su dove andare dopo? Qualsiasi Perl guru là fuori?

RISOLTO!

./ configure costruisce il Makefile in ogni sotto-directory. La biblioteca managesieve.so viene creato con una chiamata da Perl ... OSSIA Perl Makefile.PL risultante in un Makefile. consiglio di Andrew ha aiutato immensamente nel tracciare questo in giù. Nel Makefile vi sono le seguenti linee:

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 

Il che ho aggiornato a leggere:

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

E questo è risolto!

È stato utile?

Soluzione

Sembra che avete bisogno di ri-compilare la libreria vaglio condivisa e include il -lPGSql (o qualsiasi altra cosa). Esiste un configure script che è necessario aggiungere un '--with-postgres' a? In caso contrario, potrebbe essere necessario modificare manualmente il Makefile (o Makefile.PL o Build.PL).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top