2013-03-19 5 views
5

Heyo。この質問が別のスレッドで回答された場合は、事前にお詫び申し上げます。私はサイトを検索しましたが、答えは見つかりませんでした。しかし、最も関連する問題はRuby on Rails/PostgreSQL - Library not Loaded error when starting server- libq.5.dylibでしたが、決して解決されませんでした。答えは私を助けません。Ruby on Rails/PostgreSQL - サーバー起動時にライブラリがロードされないエラー

Mac OSX 10.6.8でPostgreSQLを実行しようとしています。私はすでにRuby 1.9.3p392とRails 3.2.13をインストールしています。

私は10.6.8をした、とPostGresAppが10.7以降を必要とするので、私はここで利用可能な手動インストーラ(v9.2.3)を使用してPGをインストールしてみました:http://www.enterprisedb.com/products-services-training/pgdownload

私が最初にデフォルトのパスにインストール:/ライブラリ/ PostgreSQL/9.2 /。私はその後、pg gem(PATH=$PATH:/Library/PostgreSQL/9.2/binsudo gem install pg)をインストールしました。 rails sでlocalhostを起動しようとしたとき、私は以下のエラーを受けました。

読んだ後、パスエラーと思われるので、私はpg gemを削除して、postgresqlアンインストーラを使用しました。私は/users/stewartmccoy/Library/PostgreSQL/9.2/...にpgを再インストールし、pg gemを再インストールしました。しかし、私はまだ同じエラーが発生します。

PostgreSQLを正しくインストールして、自分のレールサーバを稼動させる方法について考えてみましょうか?

stewart-mccoys-macbook:footy_subs stewartmccoy$ rails s 
/Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg.rb:4:in `require': dlopen(/Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg_ext.bundle, 9): Library not loaded: libpq.5.dylib (LoadError) 
    Referenced from: /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg_ext.bundle 
    Reason: image not found - /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg_ext.bundle 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg.rb:4:in `<top (required)>' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `require' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `block (2 levels) in require' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `each' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `block in require' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `each' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `require' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler.rb:132:in `require' 
    from /Users/stewartmccoy/Code/footy_subs/config/application.rb:13:in `<top (required)>' 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/commands.rb:53:in `require' 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/commands.rb:53:in `block in <top (required)>' 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/commands.rb:50:in `tap' 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/commands.rb:50:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 
stewart-mccoys-macbook:footy_subs stewartmccoy$ gem uninstall pgSuccessfully uninstalled pg-0.14.1 
stewart-mccoys-macbook:footy_subs stewartmccoy$ PATH=$PATH:/users/stewartmccoy/Library/PostgreSQL/9.2/bin sudo gem install pg 
Password: 
Fetching: pg-0.14.1.gem (100%) 
Building native extensions. This could take a while... 
Successfully installed pg-0.14.1 
1 gem installed 
Installing ri documentation for pg-0.14.1... 
Installing RDoc documentation for pg-0.14.1... 
stewart-mccoys-macbook:footy_subs stewartmccoy$ rails s 
/Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg.rb:4:in `require': dlopen(/Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg_ext.bundle, 9): Library not loaded: libpq.5.dylib (LoadError) 
    Referenced from: /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg_ext.bundle 
    Reason: image not found - /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg_ext.bundle 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.14.1/lib/pg.rb:4:in `<top (required)>' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `require' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `block (2 levels) in require' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `each' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `block in require' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `each' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `require' 
    from /Users/stewartmccoy/.rvm/gems/[email protected]/gems/bundler-1.3.4/lib/bundler.rb:132:in `require' 
    from /Users/stewartmccoy/Code/footy_subs/config/application.rb:13:in `<top (required)>' 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/commands.rb:53:in `require' 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/commands.rb:53:in `block in <top (required)>' 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/commands.rb:50:in `tap' 
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/commands.rb:50:in `<top (required)>' 
    from script/rails:6:in `require' 
    from script/rails:6:in `<main>' 
+1

*ありがとう*適切なレベルの詳細を提供するために - Pgバージョン、pgパッケージタイプ、ホストOSなど –

+0

[Ruby on Rails/PostgreSQL - サーバ起動時にライブラリがロードされないというエラー - libq.5.dylib] /stackoverflow.com/questions/9182645/ruby-on-rails-postgresql-library-not-loaded-error-when-starting-server-libq) – bummi

答えて

6

エラーの重要な部分は、次のとおりです。

Library not loaded: libpq.5.dylib (LoadError) 

これは、ルビーは、実行時にlibpqを見つけることができないことを示唆しています。それに対処するには、PostgreSQLインストールのlibディレクトリを指すように環境変数DYLD_LIBRARY_PATHを設定するか、グローバルに、またはRailsを起動するために使用するラッパースクリプトに設定する必要があります。詳細については、this superuser questionを参照してください。 pg_config実行ファイルがPATH上にあり、それがlibpqを見つけるために、それを使用するため、

Pg逸品コンパイルとインストール時にライブラリを見つけることができます。実行時に使用するパスは保存されないため、実行時の動的リンカーを自分で設定する必要があります。

単純なラッパースクリプトが(場合には、あなたの地球環境を変更する必要はありません)のようなものです:

#!/bin/bash 
export DYLD_LIBRARY_PATH=/path/to/pg/lib 
exec rails "[email protected]" 

「$ @を」基本的に「場合などを通じて、このスクリプトにすべての引数を渡す意味します彼らはここに直接渡された "。これは正確に引用符を保持しており、本質的に、railsコマンドはそれを直接実行しなかったとは言えません。

+0

ありがとう、Craig。DYLD_LIBRARY_PATH環境変数をグローバルに設定したくない理由がありますか?ラッパースクリプトが最善のアプローチである場合、どのようにスクリプトを保存する必要がありますか?つまり、どのファイル名と拡張子で、どのディレクトリにあるのかを確認するため、Railsは実行時にスクリプトを実行することを知っていますか? – stewartmccoy

+0

@stewartmccoy Railsはスクリプトを実行しないので、スクリプトを使用してRailsを起動します。あたかも 'rails'コマンドのように使用してください。ほとんどの場合、 'DYLD_LIBRARY_PATH'をグローバルに設定しても問題ありません。ライブラリ名が競合していないのは唯一の理由ではありません。 –

+0

'DYLD_LIBRARY_PATH'をどのようにグローバルに設定するのか、SO/googlingの検索を試みましたが、理にかなった解決策が見つかりませんでした。どうやってやるの?私はパスを '/ users/stewartmccoy/Library/PostgreSQL/9.2 /'に設定する必要があると仮定します。そして、もし私がこのアプローチをとっていれば、 'rails s'を使ってローカルホスト上のアプリケーションを見ることはできますか? – stewartmccoy

0

PATHからPostgres.appを削除し、pg gemをアンインストールし、pg gemを再度インストールすることを提案しました。

(私はそれがこの問題に適用される場合、慎重にチェックするために時間を割いていないんだけど、私はトラブルそれを見つけることがあったので、それは私が持っていた問題を解決し、私はそのソリューションを周りに広めたい。)

関連する問題