Установщик EnterpriseDB для PostgreSQL 9.3 помещает свои файлы в /Library/PostgreSQL/9.3/*
на Mac OSX. Тем не менее, Ruby gem "pg" загружает устаревшую версию динамической библиотеки "C" libpq.5.dylib
из /usr/lib
вместо правильной версии из /Library/PostgreSQL/9.3/lib
. Это происходит, несмотря на то, что я установил драгоценный камень с помощью
gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config
Я определил, какая версия libpq.5.dylib
загружается установкой переменной окружения DYLD_PRINT_LIBRARIES, перед тем, как требовать жемчуг 'pg'.
Наиболее очевидным следствием связывания с неправильной динамической библиотекой является то, что gem не может подключиться к базе данных с помощью сокета домена, поскольку сокет был перемещен между версиями от /var/pgsql_socket
до /tmp
. Однако ссылка на старую библиотеку также может вызывать другие проблемы.
Любые предложения по устранению этой проблемы?
(Я запускаю Mac OSX Lion. Примечание: для большинства pg-библиотек установщик EnterpriseDB ставит статическую (.a) и динамическую (.dylib) версию в /Library/PostgreSQL/9.3/lib
, но только для libpq.5
динамическая версия.)