On Jun 3, 11:25 am, jdl
<jameslud...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> I''m at a loss to explain why the postgres gem will not work on my
new
> server. I''ve gotten it working on several other servers in the
past.
> The major difference between then and now is that I''m using a
newer
> version of PostgreSQL. 8.x as opposed to 7.x.
>
> === Server setup
>
> OS: Fedora Core 6
>
> (Commands shown with "$" are performed as the same user that
mongrel
> is running as. "#" are commands from root.)
>
> $ /usr/local/pgsql/bin/psql --version
> psql (PostgreSQL) 8.2.4
> contains support for command-line editing
>
> === The error message
>
> I''m currently running a Rails app with mongrel_cluster on ports
> 8000-8002. When I try to access a page, I get the following in my
> production.log file.
>
> LoadError (libpq.so.5: cannot open shared object file: No such file or
> directory - /usr/lib/ruby/gems/1.8/gems/postgres-0.7.1/./postgres.so):
> /usr/lib/ruby/gems/1.8/gems/postgres-0.7.1/./postgres.so
>
> Oddly, I can do the following.
>
> $ irb
> irb(main):001:0> require ''postgres''
> => true
>
> Why would that work for the mongrel user at the command line, but not
> from the mongrel_rails process?
>
> === Installing the postgres gem.
>
> First I did a "gem install postgres" and then I tried the
following.
>
> # echo $LD_LIBRARY_PATH
> /usr/local/pgsql/lib
>
> # pwd
> /usr/lib/ruby/gems/1.8/gems/postgres-0.7.1
>
> # make clean
>
> # ruby extconf.rb --with-pgsql-dir=/usr/local/pgsql
> checking for cygwin32_socket() in -lwsock32... no
> checking for socket() in -lsocket... no
> checking for gethostbyname() in -linet... no
> checking for gethostbyname() in -lnsl... yes
> checking for sys/un.h... yes
> checking for socket()... yes
> checking for hsterror()... no
> checking for gethostname()... yes
> checking for PQsetdbLogin() in -lpq... yes
> checking for PQsetClientEncoding()... yes
> checking for pg_encoding_to_char()... yes
> checking for PQescapeString()... yes
> creating Makefile
>
> # make
> gcc -I. -I. -I/usr/lib/ruby/1.8/i386-linux -I. -DHAVE_SYS_UN_H -
> DHAVE_SOCKET -DHAVE_GETHOSTNAME -DHAVE_PQSETCLIENTENCODING -
> DHAVE_PG_ENCODING_TO_CHAR -DHAVE_PQESCAPESTRING -I/usr/local/pgsql/
> include -fPIC -c postgres.c
> gcc -shared -L"/usr/local/pgsql/lib" -L"/usr/lib" -o
postgres.so
> postgres.o -lruby -lpq -lnsl -lpthread -ldl -lcrypt -lm -lc
>
> # make install
> /usr/bin/install -c -m 0755 postgres.so /usr/lib/ruby/site_ruby/1.8/
> i386-linux
>
> # ldd ./postgres.so
> linux-gate.so.1 => (0x0091b000)
> libruby.so.1.8 => /usr/lib/libruby.so.1.8 (0x00ef8000)
> libpq.so.5 => /usr/local/pgsql/lib/libpq.so.5 (0x009b7000)
> libnsl.so.1 => /lib/libnsl.so.1 (0x0085d000)
> libpthread.so.0 => /lib/libpthread.so.0 (0x00110000)
> libdl.so.2 => /lib/libdl.so.2 (0x00b1f000)
> libcrypt.so.1 => /lib/libcrypt.so.1 (0x009d3000)
> libm.so.6 => /lib/libm.so.6 (0x00127000)
> libc.so.6 => /lib/libc.so.6 (0x0023b000)
> /lib/ld-linux.so.2 (0x00531000)
>
> As the mongrel user, I get the same result from ldd. I can also do
> the following:
>
> $ cd /usr/lib/ruby/gems/1.8/gems/postgres-0.7.1/
>
> $ ls -al
> total 164
> drwxr-xr-x 4 root root 4096 Jun 3 11:06 .
> drwxr-xr-x 17 root root 4096 Jun 3 10:50 ..
> -rw-r--r-- 1 root root 5289 Jun 3 10:50 ChangeLog
> drwxr-xr-x 2 root root 4096 Jun 3 10:50 doc
> -rw-r--r-- 1 root root 1232 Jun 3 10:50 extconf.rb
> -rw-r--r-- 1 root root 3545 Jun 3 11:06 Makefile
> -rw-r--r-- 1 root root 198 Jun 3 10:50 MANIFEST
> -rw-r--r-- 1 root root 7643 Jun 3 11:06 mkmf.log
> -rw-r--r-- 1 root root 34307 Jun 3 10:50 postgres.c
> -rw-r--r-- 1 root root 32004 Jun 3 11:06 postgres.o
> -rw-r--r-- 1 root root 684 Jun 3 10:50 postgres-ruby.gemspec
> -rwxr-xr-x 1 root root 33624 Jun 3 11:06 postgres.so
> -rw-r--r-- 1 root root 2980 Jun 3 10:50 README
> -rw-r--r-- 1 root root 4347 Jun 3 10:50 README.ja
> drwxr-xr-x 2 root root 4096 Jun 3 10:50 sample
>
> So I don''t think that it''s a permissions problem.
>
> Is this something as simple as "PostgreSQL 8.2.4 doesn''t work
with
> Ruby" or am I missing something else obvious here?
>
> -- James
Follow-up.
I removed the following packages via ''yum remove foo''.
ruby-irb
ruby-devel
ruby-libs
ruby
I then removed the /usr/lib/ruby directory.
Then I compiled a new copy of ruby with the tried-and-true
''configure / make / make install''.
Re-ran the setup for ruby gems.
Installed the gems that I needed: postgres, rails, mongrel, etc.
Some old executables where hanging around in /usr/bin (Yay for yum not
removing them as instructed.)
/usr/bin/ruby
/usr/bin
/usr/bin/mongrel_rails
/usr/bin/mongrel_cluster_ctl
I removed those files, and made symlinks in their place.
/usr/bin/ruby --> /usr/local/bin/ruby
etc...
The gem install postgres process still needed some hand-holding, with
the step of going into the gem directory and running everything by
hand (see my original post).
Everything works fine now.
Moral: package managers suck.
-- James
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---