PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Gemma Ruby 'pg' che si collega alla copia sbagliata di libpq.5.dylib (su OSX)

Sia la causa del problema che una soluzione semplice sono diventate evidenti quando ho eseguito bin/pg_config alla riga di comando.

pg_config genera le variabili utilizzate per controllare la compilazione e il collegamento. Di particolare interesse sono LIBDIR e LDFLAGS. LIBDIR specifica la posizione per le librerie statiche, mentre LDFLAGS fornisce le posizioni per cercare le librerie dinamiche. Sul mio sistema, LIBDIR è stato impostato correttamente su /LibraryPostgreSQL/9.3/lib , ma LDFLAGS è stato impostato come segue:

LDFLAGS = -L../../../src/common -L/usr/local/lib -L/opt/local/20140109/lib -Wl,-dead-strip-dylibs

Dal momento che libpq.5.dylib non era presente in nessuna di queste posizioni, la gem non è riuscita a trovarla e ha invece trovato una versione precedente che era stata installata su /usr/lib .

Un modo per risolvere questo problema sarebbe inserire la posizione del file corretta in LDFLAGS, possibilmente modificando il codice in extconf.rb che genera il file di configurazione. Tuttavia, una soluzione molto più semplice in questo caso è semplicemente aggiungere un collegamento simbolico in /usr/local/lib nella posizione del file corretta:

/usr/local/lib> ln -s /Library/PostgreSQL/9.3/lib/libpq.5.dylib libpq.5.dylib

Se riscontri un problema simile, esamina l'output di pg_config e verifica se riesci a inserire un collegamento simbolico alla posizione del file corretta in una delle directory già specificata da LDFLAGS.