10

Mac(10.6.8)でのRuby(1.9.3)、Rails、Postgres(9.0.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をインストールしようとしましたが、それでも同じエラーが発生します。

4

5 に答える 5

5

私もこれに遭遇しましたが、 python pip install psycopg2installerrorの指示に従って修正することができました。

まず、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に注意してください。私のシステムでは、MacPorts経由でインストールしたため、/ opt /local/にあります。libssl.dylibとlibcrypto.dylibの/usr/ lib /のシンボリックリンクを更新して、usr/libの古いバージョンではなく/opt/ local/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
于 2012-08-17T20:03:21.883 に答える
5

上記のようにファイルをシンボリックリンクすることは私にとってはうまくいきませんでした。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

于 2012-08-28T01:07:52.483 に答える
1

あるプロジェクトでは、このソリューション( "gem install&uninstall pg")は問題ありませんでした。

しかし、同じレールとPostgresバージョンを使用する別のプロジェクトでは、それを機能させるためにgemfileのバージョンを明示する必要がありました。

  gem 'pg', '0.14.1'
于 2012-11-15T10:43:13.460 に答える
0

新しいPostgreSQLバージョンをインストールします(私は自作を使用しました)

brew install postgres

次に、gempgを再インストールします。

gem uninstall pg
gem install pg

それが役に立てば幸い。

于 2012-08-25T13:37:52.970 に答える
0

ここで私のために働いた解決策を見つけました: https ://github.com/PostgresApp/PostgresApp/issues/109

于 2013-05-23T02:53:05.883 に答える