开发者

pg_config, ruby pg, postgresql 9.0 problem after upgrade, centos 5

开发者 https://www.devze.com 2023-02-05 03:58 出处:网络
After upgrade postgresql 8.1 to 9.0 ive noticed issues with libraries dependency. Postgresql works fine (connection, queries).

After upgrade postgresql 8.1 to 9.0 ive noticed issues with libraries dependency. Postgresql works fine (connection, queries).

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

but when im trying to install 'pg' for ruby, ive received

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.

When trying with another ruby-postgres driver, ive got

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)

and

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

also exported path

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

after running ruby script with "require pg" (works on 8.1), ive got:

/usr/local/lib/r开发者_StackOverflow中文版uby/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'

Any suggestions what to do more?


There are various config options you can add to the gem install, like -with-opt-dir, --with-pg-dir and --with-pg-config. Look at this mailing list thread:

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


$ gem --version
1.3.7

$ ruby --version
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]

$ cat /etc/redhat-release 
CentOS release 5.4 (Final)

$ uname -m
x86_64

sudo yum list installed | grep postgre    (see what you have installed)
sudo yum list available | grep postgre    (I was missing postgresql-devel)
sudo yum install postgresql-devel         (I installed it)
sudo gem install pg                       (no error this time!)

$ gem list --local | grep pg
pg (0.11.0)


This seems like a pg config file location error,

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

solves it!!

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...


On Mac OSX 10.6.8, using the MacPorts install of Postgres 9, the following command worked for me:

gem install pg -- --with-pgsql-lib=/opt/local/lib/postgresql90/lib --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config


libpq.so.4 is from an older version of PostgreSQL; 9.0 ships with /usr/pgsql-9.0/lib/libpq.so.5

If you have a program that was built against libpq.so.4, that file is provided by the compat-postgresql-libs packages, which you may not have installed. A lot of people remove it using "--force" because it can be hard to get the newer RPMs installed otherwise; that's a bad idea, but the alternative is complicated. If you've installed that package, you should find a /usr/lib/libpq.so.4 available that makes your existing program, compiled originally for the older PostgreSQL, happy.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号