Rails 3 won't install sqlite3-ruby gem with rvm?
Asked Answered
S

4

6

I'm trying out rvm, and installed ruby 1.9.2 and rails 3 with it. I need to re-install the sqlite3-ruby gem (since rvm keeps all gems separate for different versions of ruby).

The problem is, when I try, I get:

     gem install sqlite3-ruby
/home/jenny/.rvm/rubies/ruby-1.9.2-p0/bin/gem:4: warning: Insecure world writable dir /home/jenny/.rvm/gems/ruby-1.9.2-p0/bin in PATH, mode 040777
Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3-ruby:
    ERROR: Failed to build gem native extension.

/home/jenny/.rvm/rubies/ruby-1.9.2-p0/bin/ruby extconf.rb
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... yes
checking for rb_proc_arity()... yes
checking for sqlite3_initialize()... yes
checking for sqlite3_next_stmt()... yes
checking for sqlite3_column_database_name()... yes
checking for sqlite3_enable_load_extension()... no
checking for sqlite3_load_extension()... no
creating Makefile

make
gcc -I. -I/home/jenny/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/i686-linux -I/home/jenny/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby/backward -I/home/jenny/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1 -I. -DHAVE_RB_PROC_ARITY -DHAVE_SQLITE3_INITIALIZE -DHAVE_SQLITE3_NEXT_STMT -DHAVE_SQLITE3_COLUMN_DATABASE_NAME -I/usr/local/include -I/opt/local/include -I/sw/local/include -I/usr/include  -D_FILE_OFFSET_BITS=64  -fPIC -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wno-long-long  -fPIC  -o exception.o -c exception.c
In file included from ./sqlite3_ruby.h:42,
                 from exception.c:1:
./backup.h:7: error: expected specifier-qualifier-list before ‘sqlite3_backup’
make: *** [exception.o] Error 1

I'm really not quite sure what to make of it... I HAVE installed sqlite3-ruby on this machine before (with rails 2.3.5) When I try to reinstall this gem (using rvm system settings) it doesn't install in a ruby 1.8.7 enviornment, EITHER.

Did rvm break the gem? Is the new gem just not compatible with my OS (i'm running opensuse linux)

Edit: When I try re-installing (uninstalling than installing again) sqlite3-ruby in my regular ruby environment, I get the same error, but then see sqlite3-ruby listed in my gem list (not sure if it's somehow restoring from backup, or installing despite the error)

Scup answered 15/12, 2010 at 14:14 Comment(3)
What version of sqlite do you have installed on your computer?Valkyrie
When I type "sqlite3 -version" I get "3.6.4"Scup
But when I type "sqlite -version", I get "2.8.17" ...confusingScup
V
4

You could try

gem install sqlite3-ruby -- --with-sqlite3-dir=/path/to/your/sqlite3

And if that doesn't work, you might try to update your sqlite3, 3.6.4 is rather old, and I think the newer versions of Ruby sqlite have problems with something that old.

(And the most likely reason that you're getting different answers with the two is that between versions 2 and 3 was a major change -- mostly dealing with Unicode, I believe -- and some programs still use 2, not 3.)

Valkyrie answered 15/12, 2010 at 14:38 Comment(1)
Doing that gem install path gets me new and exciting errors, so I switched to trying to update my sqlite3. Doing so through yast (opensuse's package manager) was a bust, it claims that an update "cannot be provided". Guess I'll try your download link...Scup
H
6

I'd vote up or comment on Brennan's answer but I don't have enough points to do that yet. I figured I'd leave this answer in case it helps anyone else: I've spent a while on this one...I had Ruby 1.9.1 and Rails 3.0.3 installed and working but decided to move to RVM. Installed RVM according to directions and then installed rails again, all gravy...then tried to bundle install and ran into this error with sqlite3:

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

/Users/Jasonp/.rvm/rubies/ruby-1.9.2-p136/bin/ruby extconf.rb
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... no
sqlite3 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.

I know I had SQLite3 working before in my previous config, so I went to find the original dir. which was usr/local/sqlite3

I tried using that as the --with-sqlite3-dir= path but didn't work. Then just for fun I tried:

gem install sqlite3-ruby -- --with-sqlite3-dir=/usr/local/lib

and for wahtever reason, that worked. So, just in case someone

Hexameter answered 20/1, 2011 at 1:13 Comment(0)
V
4

You could try

gem install sqlite3-ruby -- --with-sqlite3-dir=/path/to/your/sqlite3

And if that doesn't work, you might try to update your sqlite3, 3.6.4 is rather old, and I think the newer versions of Ruby sqlite have problems with something that old.

(And the most likely reason that you're getting different answers with the two is that between versions 2 and 3 was a major change -- mostly dealing with Unicode, I believe -- and some programs still use 2, not 3.)

Valkyrie answered 15/12, 2010 at 14:38 Comment(1)
Doing that gem install path gets me new and exciting errors, so I switched to trying to update my sqlite3. Doing so through yast (opensuse's package manager) was a bust, it claims that an update "cannot be provided". Guess I'll try your download link...Scup
P
3

When I installed sqlite3 from source it placed the include files in /usr/local/include

I tried

gem install sqlite3-ruby -- --with-sqlite3-dir=/usr/local/lib

and it finally installed.

Pouter answered 30/12, 2010 at 17:41 Comment(0)
J
0

on ubuntu 9.04 I also had to download sqlite and install from source

Juniper answered 5/1, 2011 at 22:39 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.