雪豹升级 – >重新安装sqlite3-ruby gem问题
我得到了ruby 1.8.7(本机编译),rails 2.3.4,OSX 10.6.2以及sqlite3-ruby。
我访问rails应用程序时遇到的错误是
NameError:未初始化的常量SQLite3 :: Driver :: Native :: Driver :: API
历史 :
我通过使用FW-cable从我的旧macbook迁移我的应用程序升级到雪豹。 一切都运行了好几个月,但昨天我需要安装watir,这取决于rb-appscript,由于libsqlite3.dylib中的“错误的架构”错误而无法构建。 我认为构建是在旧机器上进行的,所以我想重建sqlite3-ruby:
$ sudo gem uninstall sqlite3-ruby
$ sudo gem install sqlite3-ruby
构建原生扩展。 这可能需要一段时间……
错误:安装sqlite3-ruby时出错:
错误:无法构建gem原生扩展。/ usr / local / bin / ruby extconf.rb
检查-lrt中的fdatasync()…否
检查sqlite3.h …是的
在-lsqlite3中检查sqlite3_open()…没有
* extconf.rb失败*
由于某些原因,可能无法创建Makefile
必要的库和/或标题。 检查mkmf.log文件以获取更多信息
细节。 您可能需要配置选项。
似乎sqlite3库不能正常工作。 我已经尝试安装macports sqlite3(sudo port install sqlite3)并使用它,但结果相同…所以我从头开始重建sqlite3 .. download-> configure-> make-> make install。 之后,gem现在构建完美,但在rails中不起作用,在本文的顶部给出了错误。
我不确定从哪里开始,因为我尝试了以下内容
- 从最新源重建sqlite3( http://www.sqlite.org/download.html )
- 重新安装sqlite3-ruby(sudo gem uninstall sqlite3-ruby && sudo gem install sqlite3-ruby)
- 使用来自macports的sqlite3(sudo port install sqlite3 && sudo gem install sqlite3-ruby)
- 重新安装rails(sudo gem install rails sqlite3-ruby)并将environment.rb更新到rails 2.3.5。
无济于事,我仍然得到这个错误:
NameError:未初始化的常量SQLite3 :: Driver :: Native :: Driver :: AP
来自/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:105:inconst_missing'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.5/lib/sqlite3/driver/native/driver.rb:76:inconst_missing'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.5/lib/sqlite3/driver/native/driver.rb:76:inconst_missing'
open’
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.5/lib/sqlite3/driver/native/driver.rb:76:in
来自/usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.5/lib/sqlite3/database.rb:76:in`initialize’
顺便说一下,我从Snow Leopard CD上安装了Xcode。
我该怎么做才能解决问题?
我的问题略有不同,实际上我找到的解决方案没有在线工作。
在升级到Snow Leopard和XCode 4.0试用版后尝试安装sqlite3-ruby时,我收到了消息
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'
但是安装了sqlite3,并且重新安装也无济于事。 我之前已经有了64位和通用版本的问题,但我已经清除了。 事实上,我可以使用sqlite3。
所以gem install也应该告诉你这些内容:
Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.3.1 for inspection.
所以cd到那个目录,然后找到extconf.rb,我的是在./ext/sqlite3/extconf.rb我发现ruby正在检查sqlite3库使用
asplode('sqlite3') unless find_library 'sqlite3', 'sqlite3_libversion_number'
所以我解雇了irb并检查了为什么这不起作用:
require 'mkmf' find_library 'sqlite3', 'sqlite3_libversion_number'
嗯,事实上这是有效的,我的ruby找到了库。 那么为什么它不能在设置中起作用呢? 检查extconf.rb密切关注以下行:
sqlite = dir_config('sqlite3', ['/usr/local', '/opt/local', '/usr'])
当我在irb中执行此操作时:
require 'mkmf' sqlite = dir_config('sqlite3', ['/usr/local', '/opt/local', '/usr']) find_library 'sqlite3', 'sqlite3_libversion_number'
令人惊讶的是,我不会再找到这个库了。 事实上我不明白这是怎么回事,但那就是发生了什么。
所以这就是治愈方法:评论出这条线
sqlite = dir_config('sqlite3', ['/usr/local', '/opt/local', '/usr'])
在extconf.rb中
然后从/Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.3.1我发布
sudo ruby ./setup.rb
这没有遇到任何问题(我在评论出sqlite =行之前尝试过,但它没有用)
重新启动了有sqlite问题的ruby应用程序。 工作良好。
希望这会对某人有所帮助。
冰淇淋
谢谢你的回答。 以下是我为解决问题所做的工作:
-
完全重新安装ruby1.8.7到/ usr / local,请看这里: http ://hivelogic.com/articles/ruby-rails-leopard
注意:在我的mac上重新编译ruby时,readline无法正常工作,因此我必须从头开始构建它,并确保添加–with-readline-dir选项来配置:
./configure –enable-shared –enable-pthread CFLAGS = -D_XOPEN_SOURCE = 1 –prefix = / usr / local –with-readline-dir = / usr / local
-
完全重新安装sqlite3到/ usr / local
-
使用sudo gem install XXX重建系统上的所有gem,包括sqlite3-ruby。 这仅适用于特定于平台的gem,但我发现只需在oneliner中安装所有内容即可:
sudo gem install gem1 gem2 … gemN –no-ri –no-rdoc
我尝试使用ruby1.9,但由于gem和插件中的依赖性破坏,一切都停止了工作,所以我不建议切换到1.9,除非你需要进行一些繁重的调试并知道如何恢复旧系统!
最后一切都在运行!
我在Don Park的博客上找到了一些指导:
http://blog.docuverse.com/2009/09/24/installing-sqlite3-ruby-gem-on-snow-leopard/
他的解决方案直接指向以下线程中的Stack Overflow:
雪豹,sqlite3-ruby
关于ln命令的答案似乎已经解决了我的问题。 希望它也能帮到你。
如果gem没有构建它不是因为你需要从源代码重建sqlite3,但是为了构建gem你将需要sqlite3开发人员库。
在大多数Linux / Unix系统上,您可以通过执行’sudo apt-get install sqlite3-dev’来安装它们,但是我不确定它如何与Macports一起使用 – 但请确保您拥有该软件包。 你必须确保它们在你的路径中或者在安装gem时传递它们所在的目录(请参阅gem的输出以获取有关这样做的选项的提示)。
我的Mac上运行sqlite3就好了,1.8.7和现在我更新的1.9.1 Ruby。 您可能还想确保安装了XCode Developer Tools。
对于那些使用Snow Leopard 64并且安装此macport的问题,我解决了这个问题。
sudo port install rb-sqlite3 +universal