8

postgresql 8.1 から 9.0 へのアップグレード後、ライブラリの依存関係の問題に気づきました。Postgresql は正常に動作します (接続、クエリ)。

yum list postgresql*
Installed Packages
postgresql.i386 9.0.0-1PGDG.el5 installed
postgresql-debuginfo.i386 9.0.0-1PGDG.el5 installed
postgresql-devel.i386 9.0.0-1PGDG.el5 installed
postgresql-libs.i386 9.0.0-1PGDG.el5 installed
postgresql-odbcng.i386 0.90.101-2.el5 installed
postgresql-plruby.i386 0.5.1-5.el5 installed
postgresql-server.i386 9.0.0-1PGDG.el5 install

しかし、ルビー用に「pg」をインストールしようとすると、受け取った

gem install pg
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
        ERROR: Failed to build gem native extension.

/usr/local/bin/ruby extconf.rb
checking for pg_config... no
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

別の ruby​​-postgres ドライバーで試してみると、

yum install ruby-postgres
ruby-postgres-0.7.1-5.el5.i386 from epel has depsolving problems
  --> Missing Dependency: libpq.so.4 is needed by package ruby-postgres-0.7.1-5.el5.i386 (epel)

locate libpq.so.4
/usr/lib/libpq.so.4
/usr/lib/libpq.so.4.1

エクスポートされたパスも

LD_LIBRARY_PATH=/usr/pgsql-9.0/lib
export LD_LIBRARY_PATH

「require pg」(8.1で動作)でrubyスクリプトを実行した後、次のようになりました:

/usr/local/lib/ruby/site_ruby/1.8/i686-linux/pg_ext.so: libpq.so.4: cannot open shared object file: No such file or directory - /usr/local/lib/ruby/site_ruby/1.8/i686-linux/pg_ext.so (LoadError)
        from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:29:in `require'
        from /usr/local/lib/ruby/site_ruby/1.8/pg.rb:12
        from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:29:in `gem_original_require'
        from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:29:in `require'

もっと何をすべきか提案はありますか?

4

5 に答える 5

6

やなど-with-opt-dir、gem のインストールに追加できるさまざまな設定オプションがあります。このメーリング リストのスレッドを見てください。--with-pg-dir--with-pg-config

http://www.ruby-forum.com/topic/409608

于 2011-01-16T19:09:30.420 に答える
5
$ gem --バージョン
1.3.7

$ ruby​​ --バージョン
ruby 1.9.2p180 (2011-02-18 リビジョン 30909) [x86_64-linux]

$ cat /etc/redhat-release
CentOS リリース 5.4 (最終版)

$ ウナメ -m
x86_64

sudo yum リストがインストールされました | grep postgre (インストールしたものを参照)
利用可能な sudo yum リスト | grep postgre (postgresql-devel がありませんでした)
sudo yum install postgresql-devel (インストールしました)
sudo gem install pg (今回はエラーなし!)

$ 宝石リスト --local | grep pg
pg (0.11.0)
于 2011-06-18T22:59:40.157 に答える
3

これは、pgconfigファイルの場所のエラーのようです。

gem install pg -- --with-pgsql-lib=/usr/pgsql-9.0/lib --with-pg-config=/usr/pgsql-9.1/bin/pg_config

それを解決します!

gem install pg -- --with-pgsql-lib=/usr/pgsql-9.0/lib --with-pg-config=/usr/pgsql-9.1/bin/pg_config

/usr/local/lib/ruby/1.9.1/yaml.rb:56:in `<top (required)>':
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
Building native extensions.  This could take a while...
Successfully installed pg-0.14.0
1 gem installed
Installing ri documentation for pg-0.14.0...
Installing RDoc documentation for pg-0.14.0...
于 2012-07-31T16:16:08.200 に答える
1

Mac OSX 10.6.8 では、Postgres 9 の MacPorts インストールを使用して、次のコマンドが機能しました。

gem install pg -- --with-pgsql-lib=/opt/local/lib/postgresql90/lib --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config
于 2011-10-24T05:35:55.057 に答える
0

libpq.so.4は古いバージョンの PostgreSQL のものです。9.0 には/usr/pgsql-9.0/lib/libpq.so.5が同梱されています

libpq.so.4 に対してビルドされたプログラムがある場合、そのファイルは、インストールしていない可能性があるcompat-postgresql-libsパッケージによって提供されます。新しい RPM をインストールするのが難しいため、多くの人が「--force」を使用してそれを削除します。それは悪い考えですが、別の方法は複雑です。そのパッケージをインストールした場合、元は古い PostgreSQL 用にコンパイルされた既存のプログラムを満足させる/usr/lib/libpq.so.4が利用可能になるはずです。

于 2011-01-22T15:35:58.527 に答える