Rails 3不会用rvm安装sqlite3-ruby gem?

Jen*_*nny 6 ruby sqlite3-ruby rvm

我正在尝试rvm,并安装了ruby 1.9.2和rails 3.我需要重新安装sqlite3-ruby gem(因为rvm保留所有gem为不同版本的ruby分开).

问题是,当我尝试时,我得到:

     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
Run Code Online (Sandbox Code Playgroud)

我真的不太清楚要做什么...我之前已经在这台机器上安装了sqlite3-ruby(使用rails 2.3.5)当我尝试重新安装这个gem(使用rvm系统设置)时,它没有安装在红宝石1.8.7环境中,EITHER.

rvm打破了宝石吗?新宝石是否与我的操作系统不兼容(我正在运行opensuse linux)

编辑:当我尝试在我的常规ruby环境中重新安装(卸载而不是再次安装)sqlite3-ruby时,我得到了相同的错误,但是后来看到我的gem列表中列出的sqlite3-ruby(不确定它是否以某种方式从备份恢复,或安装尽管有错误)

Jas*_*ton 6

我会对Brennan的答案进行投票或评论,但我还没有足够的分数来做到这一点.我想我会留下这个答案,以防它帮助其他人:我已经花了一段时间在这一个...我安装了Ruby 1.9.1和Rails 3.0.3并且正在工作但是决定转移到RVM.根据指示安装RVM然后再次安装rails,所有的肉汁......然后尝试捆绑安装并使用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.
Run Code Online (Sandbox Code Playgroud)

我知道我之前的配置中有SQLite3工作,所以我去找原始的目录.这是usr/local/sqlite3

我尝试使用它作为--with-sqlite3-dir=路径,但没有工作.然后只是为了好玩我试过:

gem install sqlite3-ruby -- --with-sqlite3-dir=/usr/local/lib
Run Code Online (Sandbox Code Playgroud)

并且出于某种原因,这很有效.所以,以防万一有人


bha*_*mby 4

你可以尝试

gem install sqlite3-ruby -- --with-sqlite3-dir=/path/to/your/sqlite3
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,您可能会尝试更新您的 sqlite3,3.6.4 相当旧,我认为较新版本的 Ruby sqlite 对于旧版本存在问题。

(您得到这两个版本不同答案的最可能原因是版本 2 和版本 3 之间发生了重大变化 - 我相信主要是处理 Unicode - 并且某些程序仍然使用 2,而不是 3。)