PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Gem Ruby 'pg' linkando para cópia errada de libpq.5.dylib (no OSX)


A causa do problema e uma solução fácil ficaram aparentes quando executei bin/pg_config na linha de comando.

pg_config gera as variáveis ​​que são usadas para controlar a compilação e a vinculação. De particular interesse são LIBDIR e LDFLAGS. LIBDIR especifica o local para bibliotecas estáticas, enquanto LDFLAGS fornece locais para pesquisar bibliotecas dinâmicas. No meu sistema, LIBDIR foi definido corretamente para /LibraryPostgreSQL/9.3/lib , mas LDFLAGS foi definido da seguinte forma:
LDFLAGS = -L../../../src/common -L/usr/local/lib -L/opt/local/20140109/lib -Wl,-dead-strip-dylibs

Desde libpq.5.dylib não estava presente em nenhum desses locais, a gem não conseguiu encontrá-lo e, em vez disso, encontrou uma versão mais antiga que estava instalada em /usr/lib .

Uma maneira de corrigir isso seria injetar o local correto do arquivo em LDFLAGS, possivelmente modificando o código em extconf.rb que gera o arquivo de configuração. No entanto, uma correção muito mais fácil neste caso é apenas adicionar um link simbólico em /usr/local/lib para o local correto do arquivo:
/usr/local/lib> ln -s /Library/PostgreSQL/9.3/lib/libpq.5.dylib libpq.5.dylib

Se você se deparar com um problema semelhante, basta examinar a saída de pg_config , e veja se você pode colocar um link simbólico para o local correto do arquivo em um dos diretórios já especificados pelo LDFLAGS.