rails-postgres ошибка: причина: несовместимая версия библиотеки: libpq.5.dylib требует версии 1.0.0 или более поздней,

Я застрял с настройкой Ruby (1.9.3), Rails и Postgres (9.0.8) на моем Mac (10.6.8). Каждый раз, когда я бегу rails console Я получаю следующую ошибку:

/Users/dc/.rvm/gems/ruby-1.9.3-head@global/gems/pg-0.13.2/lib/pg.rb:4:in `require': dlopen(/Users/dc/.rvm/gems/ruby-1.9.3-head@global/gems/pg-0.13.2/lib/pg_ext.bundle, 9): Library not loaded: @loader_path/../lib/libssl.dylib (LoadError)
  Referenced from: /usr/lib/libpq.5.dylib
  Reason: Incompatible library version: libpq.5.dylib requires version 1.0.0 or later, but libssl.0.9.8.dylib provides version 0.9.8 - /Users/dc/.rvm/gems/ruby-1.9.3-head@global/gems/pg-0.13.2/lib/pg_ext.bundle  
    from /Users/dc/.rvm/gems/ruby-1.9.3-head@global/gems/pg-0.13.2/lib/pg.rb:4:in `<top (required)>'
    from /Users/dc/.rvm/gems/ruby-1.9.3-head@global/gems/bundler-1.1.4/lib/bundler/runtime.rb:68:in `require'
    from /Users/dc/.rvm/gems/ruby-1.9.3-head@global/gems/bundler-1.1.4/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
    from /Users/dc/.rvm/gems/ruby-1.9.3-head@global/gems/bundler-1.1.4/lib/bundler/runtime.rb:66:in `each'
    from /Users/dc/.rvm/gems/ruby-1.9.3-head@global/gems/bundler-1.1.4/lib/bundler/runtime.rb:66:in `block in require'
    from /Users/dc/.rvm/gems/ruby-1.9.3-head@global/gems/bundler-1.1.4/lib/bundler/runtime.rb:55:in `each'
    from /Users/dc/.rvm/gems/ruby-1.9.3-head@global/gems/bundler-1.1.4/lib/bundler/runtime.rb:55:in `require'
    from /Users/dc/.rvm/gems/ruby-1.9.3-head@global/gems/bundler-1.1.4/lib/bundler.rb:119:in `require'
    from /Users/dc/Documents/Aptana Studio 3 Workspace/http/config/application.rb:7:in `<top (required)>'
    from /Users/dc/.rvm/gems/ruby-1.9.3-head@global/gems/railties-3.2.6/lib/rails/commands.rb:39:in `require'
    from /Users/dc/.rvm/gems/ruby-1.9.3-head@global/gems/railties-3.2.6/lib/rails/commands.rb:39:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

Я действительно не знаю, как это исправить. Я уже пытался установить другую версию Postgres, и я все еще получаю ту же ошибку.

5 ответов


Я тоже столкнулся с этим, но смог исправить это, следуя инструкциям на python pip install psycopg2 ошибка установки.

во-первых, убедитесь, что у вас есть самая последняя версия OpenSSL установлено:

MacBook Pro:~> openssl version -a
OpenSSL 1.0.0c 2 Dec 2010
built on: Mon Jan  3 17:26:21 PST 2011
platform: darwin64-x86_64-cc
options:  bn(64,64) rc4(ptr,char) des(idx,cisc,16,int) idea(int) blowfish(idx) 
compiler: /usr/bin/gcc-4.2 -fPIC -fno-common -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -arch x86_64 -O3 -DL_ENDIAN -DMD32_REG_T=int -Wall
OPENSSLDIR: "/opt/local/etc/openssl"

...и обратите внимание на OPENSSLDIR. В моей системе он находится в /opt/ local/, потому что я установил его через MacPorts. Мне просто нужно было обновить символические ссылки в /usr/ lib / для libssl.dylib и libcrypto.dylib так, чтобы они указывали на правильный версии в /opt/local / lib вместо старой версии в usr / lib:

MacBook Pro:~> ls -la /usr/lib/libssl.dylib 
lrwxr-xr-x  1 root  wheel  33 Aug 17 12:25 /usr/lib/libssl.dylib -> /opt/local/lib/libssl.1.0.0.dylib
MacBook Pro:~> ls -la /usr/lib/libcrypto.dylib 
lrwxr-xr-x  1 root  wheel  36 Aug 17 12:28 /usr/lib/libcrypto.dylib -> /opt/local/lib/libcrypto.1.0.0.dylib

вы можете создать ссылки, используя :

sudo ln -s /path/to/postgres/install/lib/libcrypto.dylib /usr/lib/libcrypto.dylib
sudo ln -s /path/to/postgres/install/lib/libssl.dylib /usr/lib/libssl.dylib

Symlinking файлы, как указано выше, не работали для меня. pg всегда будет смотреть на libssl-0.9.8.dylib нужна.

этот вопрос содержит правильный ответ кажется: gem install pg --with-pg-config работает, пакет не работает

Это сводится к

bundle config build.pg --with-pg-config=/Library/PostgreSQL/9.1/bin/pg_config

(или какой бы pg вы ни выбрали)

следовал по gem uninstall pg а то bundle install


в одном проекте это решение ("gem install & uninstall pg") было прекрасным.

но в другом проекте, который использует ту же версию rails и Postgres, я должен был быть явным с версией в gemfile, чтобы заставить ее работать:

  gem 'pg', '0.14.1'

установить новую версию PostgreSQL (я использовал homebrew)

brew install postgres

затем переустановите gem pg:

gem uninstall pg
gem install pg

надеюсь, что это помогает.


нашел решение, которое сработало для меня: https://github.com/PostgresApp/PostgresApp/issues/109