MySQL gem 2.7 not finding mysql.so


#1

ruby 1.8.7
Rails 2.2.2
mysql gem 2.7
Linux 2.6.18-92.el5

Hey guys. The MySQL gem is puzzling me. When I run irb> require
‘mysql’ I get the error shown below:

  1. irb(main):001:0> require ‘rubygems’
  2. => true
  3. irb(main):002:0> require ‘mysql’
  4. LoadError: libmysqlclient.so.16: cannot open shared object file:
    No such file or directory - /usr/local/lib/ruby/gems/1.8/gems/
    mysql-2.7/lib/mysql.so
  5.     from /usr/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/
    

mysql.so
6. from /usr/local/lib/ruby/site_ruby/1.8/rubygems/
custom_require.rb:36:in `require’
7. from (irb):2

It says “no such file or directory” when in fact that file, mysql.so,
absolutely does exist in that exact location.

After some Googling I found that I could use ldconfig to configure
mysql.so to be available to the whole system. Once I added “/usr/local/
mysql/lib” to /etc/ld.so.conf and ran ldconfig, it worked fine:

  1. irb(main):002:0> require ‘rubygems’
  2. => true
  3. irb(main):003:0> require ‘mysql’
  4. => true

OK, so I got it to work. But my question is, why was I getting that
error previously? I never had to use ldconfig before to get the mysql
gem to work. Has anyone else encountered the same error? Is there a
better solution?

This is how I installed the mysql gem:

  1. gem install mysql --no-rdoc --no-ri \
  2. – --with-mysql-include=/usr/local/mysql/include \
  3. –with-mysql-lib=/usr/local/mysql/lib \
  4. –with-mysql-config=/usr/local/mysql/bin/mysql_config

Any insight would be greatly appreciated.

Thanks,

E


#2

On 4 Dec 2008, at 19:26, ebdb removed_email_address@domain.invalid wrote:

  1. => true
    It says “no such file or directory” when in fact that file, mysql.so,
    absolutely does exist in that exact location.

It’s not telling you that mysql.so was not found. It’s saying that
while loading that it tried to load libmysqlclient but failed to find
that (because ldconfig hadn’t been told to look in the right place)

OK, so I got it to work. But my question is, why was I getting that
error previously? I never had to use ldconfig before to get the mysql
gem to work. Has anyone else encountered the same error? Is there a
better solution?

You wouldn’t need to do this if the mysql libraries were installed in
somewhere like /usr/lib or /usr/local/lib which was already on the
search path

Fred