2012-06-20 1 views
8

Я застрял в установке Ruby (1.9.3), Rails и Postgres (9.0.8) на мой Mac (10.6.8). Everytime когда я бегу rails console я получаю следующее сообщение об ошибке:rails - postgres error: Причина: Несовместимая версия библиотеки: libpq.5.dylib требует версию 1.0.0 или новее,

/Users/dc/.rvm/gems/[email protected]/gems/pg-0.13.2/lib/pg.rb:4:in `require': dlopen(/Users/dc/.rvm/gems/[email protected]/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/[email protected]/gems/pg-0.13.2/lib/pg_ext.bundle 
    from /Users/dc/.rvm/gems/[email protected]/gems/pg-0.13.2/lib/pg.rb:4:in `<top (required)>' 
    from /Users/dc/.rvm/gems/[email protected]/gems/bundler-1.1.4/lib/bundler/runtime.rb:68:in `require' 
    from /Users/dc/.rvm/gems/[email protected]/gems/bundler-1.1.4/lib/bundler/runtime.rb:68:in `block (2 levels) in require' 
    from /Users/dc/.rvm/gems/[email protected]/gems/bundler-1.1.4/lib/bundler/runtime.rb:66:in `each' 
    from /Users/dc/.rvm/gems/[email protected]/gems/bundler-1.1.4/lib/bundler/runtime.rb:66:in `block in require' 
    from /Users/dc/.rvm/gems/[email protected]/gems/bundler-1.1.4/lib/bundler/runtime.rb:55:in `each' 
    from /Users/dc/.rvm/gems/[email protected]/gems/bundler-1.1.4/lib/bundler/runtime.rb:55:in `require' 
    from /Users/dc/.rvm/gems/[email protected]/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/[email protected]/gems/railties-3.2.6/lib/rails/commands.rb:39:in `require' 
    from /Users/dc/.rvm/gems/[email protected]/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, и я все равно получаю ту же ошибку.

+0

Я борюсь с той же проблемой. Если это поможет ... –

ответ

5

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

Во-первых, убедитесь, что у вас есть most recent version of 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 

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

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 
+1

милый, я, наконец, получил его работу. Я установил символические ссылки, как описано, и установил конфигурацию пакета ... – dc10

+0

Отлично! Рад это слышать. – MothOnMars

0

Установить новую версию PostgreSQL (я использовал самодельный)

brew install postgres 

После этого установите гем стр:

gem uninstall pg 
gem install pg 

Надеюсь, это поможет.

+1

Нет такой вещи, как «postgre» и «brew install postgre» будет производить только ошибку.Я предполагаю, что вы имели в виду «postgres» или «PostgreSQL»? Кроме того, оригинальный плакат сказал, что они уже пробовали новую версию Pg. –

5

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

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

Он сводится к

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

(или в зависимости от того П.Г. вы ориентируетесь)

с последующим gem uninstall pg и затем bundle install

+1

Это сработало для меня :) –

+0

Для меня тоже, спасибо! –

1

В одном проекте это решение («драгоценный камень» установить & удалить pg ") было в порядке.

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

gem 'pg', '0.14.1' 
0

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

+0

Не могли бы вы включить резюме решения? Это сделает ваш ответ более доступным, плюс он все равно сохранит значение, если связанная страница исчезнет. –

+0

'export DYLD_FALLBACK_LIBRARY_PATH =/Приложения/Postgres.app/Содержание/MacOS/lib: $ DYLD_LIBRARY_PATH' работает для меня –