7

へー。この質問が別のスレッドで回答されている場合は、事前にお詫び申し上げます。サイトを検索しましたが、答えが見つかりませんでした。ただし、最も関連する問題はRuby on Rails / PostgreSQL - Library not Loaded error when starting server- libq.5.dylib でしたが、解決されず、答えが役に立ちません。

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

最初に、/Library/PostgreSQL/9.2/ のデフォルト パスにインストールしました。次に、pg gem ( PATH=$PATH:/Library/PostgreSQL/9.2/bin sudo gem install pg) をインストールしました。ローカルホストを起動しようとrails sすると、以下のエラーが発生しました。

いくつか読んだ後、パスエラーである可能性があると推測したため、pg gem を削除してから、postgresql アンインストーラーを使用しました。次に、pg を /users/stewartmccoy/Library/PostgreSQL/9.2/... に再インストールし、pg gem を再インストールしました。しかし、私はまだ同じエラーが発生します。

PostgreSQL を正しくインストールして Rails サーバーを稼働させる方法について何か考えはありますか?

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/ruby-1.9.3-p392@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `require'
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `each'
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `block in require'
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `each'
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `require'
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392@global/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/ruby-1.9.3-p392@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `require'
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `each'
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `block in require'
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `each'
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `require'
    from /Users/stewartmccoy/.rvm/gems/ruby-1.9.3-p392@global/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>'
4

2 に答える 2

8

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

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

libpqこれは、実行時に ruby​​ が見つからないことを示唆しています。これに対処するには、DYLD_LIBRARY_PATH環境変数を PostgreSQL インストールのディレクトリを指すように、libグローバルに、または Rails の起動に使用するラッパー スクリプトで設定する必要があります。詳細については、このスーパーユーザーの質問を参照してください。

実行可能ファイルは にあり、それを使用して を検索するため、Pggem はコンパイルおよびインストール中にライブラリを見つけることができます。実行時に使用するパスを保存していないように見えるため、実行時の動的リンカーを自分で設定する必要があります。pg_configPATHlibpq

単純なラッパー スクリプト (グローバル環境を変更したくない場合) は次のようなものです。

#!/bin/bash
export DYLD_LIBRARY_PATH=/path/to/pg/lib 
exec rails "$@"

「$@」は基本的に、「ここに直接渡されたかのように、すべての引数をこのスクリプトに渡す」ことを意味します。引用符が正しく保持され、基本的には、rails コマンドが直接実行されていないことを通知できないことを意味します。

于 2013-03-19T23:43:43.753 に答える
1

同様のスタックオーバーフローの回答では、Postgres.app を PATH から削除し、pg gem をアンインストールして、pg gem を再度インストールすることを提案しました。

(それがこの問題に当てはまるかどうかを注意深く確認する時間は取っていませんが、私が抱えていた問題は解決しました。その解決策を見つけるのに苦労したので、その解決策を広めたいと思います。)

于 2013-06-14T06:52:29.403 に答える