Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot install sqlite3 gem

I am trying to run the bundle command to install all the gems for a todo application. All gems have downloaded without a problem but the sqlite3 gem has not. I have no idea what the following means could somebody please explain what is going on and how to fix?

Installing sqlite3 1.3.8 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

/Users/tomfinet/.rbenv/versions/2.2.3/bin/ruby -r ./siteconf20151208-

2023-1esrcfp.rb 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_backup_init()... yes
checking for sqlite3_column_database_name()... no
checking for sqlite3_enable_load_extension()... no
checking for sqlite3_load_extension()... no
checking for sqlite3_open_v2()... yes
checking for sqlite3_prepare_v2()... yes
checking for sqlite3_int64 in sqlite3.h... yes
checking for sqlite3_uint64 in sqlite3.h... yes
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling backup.c
compiling database.c
compiling exception.c
compiling sqlite3.c
compiling statement.c
statement.c:261:11: warning: implicit declaration of function 'RBIGNUM' is invalid in C99 [-Wimplicit-function-declaration]
      if (RBIGNUM_LEN(value) * SIZEOF_BDIGITS <= 8) {
          ^
./sqlite3_ruby.h:16:24: note: expanded from macro 'RBIGNUM_LEN'
#define RBIGNUM_LEN(x) RBIGNUM(x)->len
                       ^
statement.c:261:11: error: member reference type 'int' is not a pointer
      if (RBIGNUM_LEN(value) * SIZEOF_BDIGITS <= 8) {
          ^~~~~~~~~~~~~~~~~~
./sqlite3_ruby.h:16:36: note: expanded from macro 'RBIGNUM_LEN'
#define RBIGNUM_LEN(x) RBIGNUM(x)->len
                       ~~~~~~~~~~  ^
statement.c:261:32: error: use of undeclared identifier 'SIZEOF_BDIGITS'
      if (RBIGNUM_LEN(value) * SIZEOF_BDIGITS <= 8) {
                               ^
1 warning and 2 errors generated.
make: *** [statement.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/tomfinet/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/sqlite3-1.3.8 for inspection.
Results logged to /Users/tomfinet/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/sqlite3-1.3.8/gem_make.out
An error occurred while installing sqlite3 (1.3.8), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.8'` succeeds before bundling.

What is the problem and how do I fix it? Thanks.

like image 718
Tom Finet Avatar asked Dec 08 '15 08:12

Tom Finet


3 Answers

bundle update sqlite3

Have a look at this gist

like image 80
banyudu Avatar answered Oct 23 '22 07:10

banyudu


Ah, looks like it’s an issue with the sqlite3 v1.4.0 gem which was released on February 4.

Mention the following sqlite3 version in your gem file:

gem "sqlite3", "~> 1.3.6”

Then make sure to “bundle install”.

like image 20
A.r. Basith Avatar answered Oct 23 '22 09:10

A.r. Basith


You need the SQLite3 development headers for the gem’s native extension to compile against. You can install them by running (possibly with sudo):

apt-get install libsqlite3-dev

After which, be sure to run

bundle update sqlite3
like image 3
Ivan Fretes Avatar answered Oct 23 '22 09:10

Ivan Fretes