7

I use apt-get to install sqlite3 in my VPS which is running Ubuntu 10. I can run sqlite3 with no problem. But when I try to use gem install sqlite3, I got this error:

root@makserver:/# gem install sqlite3
Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3:
    ERROR: Failed to build gem native extension.

        /usr/local/bin/ruby extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal'
or 'yum install sqlite3-devel' and check your shared library search path (the
location where your sqlite3 shared library is located).
*** 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.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/usr/local/bin/ruby
    --with-sqlite3-dir
    --without-sqlite3-dir
    --with-sqlite3-include
    --without-sqlite3-include=${sqlite3-dir}/include
    --with-sqlite3-lib
    --without-sqlite3-lib=${sqlite3-dir}/lib


Gem files will remain installed in /usr/local/lib/ruby/gems/1.9.1/gems/sqlite3-1.3.3 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.9.1/gems/sqlite3-1.3.3/ext/sqlite3/gem_make.out

Any advice?

Martijn Pieters
  • 1,048,767
  • 296
  • 4,058
  • 3,343
mko
  • 21,334
  • 49
  • 130
  • 191

1 Answers1

19

You need to first install the sqlite development headers so it can compile the gem against them:

sudo apt-get install libsqlite3-dev

Then try installing the gem.

Andrew Marshall
  • 95,083
  • 20
  • 220
  • 214
  • It works! I want to know what's development header, what does it use for? – mko Feb 19 '11 at 08:43
  • The sqlite3 gem is a Ruby C extension, as such it has to be compiled. Since it needs to include the sqlite3 library headers in the compilation, it needs that package. – Andrew Marshall Feb 19 '11 at 08:47