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.