安装sqlite3-ruby的问题!

我在crunchbang linux上安装sqlite3-ruby gem时遇到问题。 谷歌搜索过去几个小时后跟随几个有同样问题的人,我仍然没有得到它的工作。

这是我在尝试’sudo gem install sqlite3-ruby’之后看到的

构建原生扩展。 这可能需要一段时间……
错误:安装sqlite3-ruby时出错:
错误:无法构建gem原生扩展。

/usr/bin/ruby1.8 extconf.rb
检查sqlite3.h …是的
检查-lsqlite3中的sqlite3_libversion_number()…是的
检查rb_proc_arity()…没有
检查sqlite3_initialize()…没有
sqlite3-ruby只支持sqlite3版本3.6.16+,请升级!
* extconf.rb失败*
由于某些原因,可能无法创建Makefile
必要的库和/或标题。 检查mkmf.log文件以获取更多信息
细节。 您可能需要配置选项。

接下来我跑过这个页面; http://groups.google.com/group/sqlite3-ruby/browse_thread/thread/f22d098b561c48af/6e754f7b2fc3cd75?#6e754f7b2fc3cd75

我下载了sqlite-amalgamation-3.7.0.1.tar.gz并发出以下命令:

tar zxvf sqlite-amalgamation-3.7.0.1.tar.gz
cd cd sqlite-3.7.0.1
mkdir $ HOME / sqlite
./configure –prefix = $ HOME / sqlite
make && make install
sudo gem install sqlite3-ruby – –with-sqlite3-dir = $ HOME / sqlite

但是,我仍然得到完全相同的错误。 我使用’sudo apt-get install sqlite3 libsqlite3-dev’,但我仍然得到完全相同的错误。

任何建议?

而作为一个小小的一边,为什么当我使用’sudo apt-get install sqlite3’时,它抓取3.5.9而不是我手动下载的3.7.0.1?

安装较低版本的sqlite3-ruby应解决您的问题:

sudo gem install sqlite3-ruby --version=1.2.5 

这是因为在将Makefile放在一起之前测试函数时,extconf.rb会选择旧的3.5.9库。

减少这个缺点的一个解决方案是apt-get删除sqlite3并重试

 sudo gem install sqlite3-ruby -- --with-sqlite3-dir=$HOME/sqlite 

如果要使用sqlite3命令行二进制文件,这可能会使您免于不兼容。

另一种解决方案是将新的〜/ sqlite / lib / libsqlite3.a复制到gem的build目录中(参见gem env,类似gems / sqlite3-ruby-1.3.1 / ext / sqlite3)并重试

 sudo gem install sqlite3-ruby 

测试应该现在拿起你的新库并安装好。

根据sqlite3-ruby(现在命名为sqlite3)README.rdoc,您可以使用以下方法指向正确的库:

如果您在非标准位置安装了sqlite3,则可以通过执行以下操作来指定include和lib文件的位置:

gem install sqlite3 -- --with-sqlite3-include=/opt/local/include \

–with-sqlite3的-LIB = /选择/本地/ lib中

肖恩,让我试着详细说明。

Ruby通过编译小例子并validation编译是否成功来适应sqlite3库。 这会选择旧库,但不包含所需的function。

第一个解决方案是删除旧库并将ruby定向到您下载新版本的目录。 根据您使用的系统,您必须选择正确的包管理器:apt-get,dpkg,yum,yast,ipkg,…以删除过时的包。 这可以确保您的构建不会拾取任何旧件。 然后你必须确保使用–with-sqlite3-dir选项将ruby指向新库所在的正确目录。

第二种解决方案是一种黑客攻击。 它依赖于C编译器在其他文件之前获取当前目录中的文件。 您可以使用cp,mc或任何其他文件管理器将.a库和.h标头复制到构建目录。 构建应该没问题,但是你的sqlite3命令仍然是旧命令,可能与用新库创建的数据库不兼容。

HTH,Jarek

我有一个类似的问题 – 我只是将项目目录中./Gemfile的以下令人讨厌的行注释掉:

 # gem 'sqlite3-ruby', :require => 'sqlite3' 

并做了:

 bundle install 

脚本/ rails服务器再次正常工作。 唷!

似乎sqlite3是重复的 – 很奇怪

我在OSX 10.5.8上遇到了同样的问题

解决方案非常简单:

1.-从苹果开发商下载的Xcode:xcode314_2809_developerdvd.dmg(需要注册)2.-下载并安装macports: http ://distfiles.macports.org/MacPorts/MacPorts-1.9.2-10.5-Leopard.dmg 3。 – sudo port install sqlite3

一切都按预期工作。

希望这个结果有用!

我有同样的问题。 当我将所有文件(不仅仅是libsqlite3.a )从~/sqlite/libgems/sqlite3-ruby-1.3.1/ext/sqlite3时,Jarek的解决方案起作用了。