我正在尝试让我的 ruby on rails 启动并运行,但我似乎无法安装 sqlite3-ruby gem 。当我运行它时,我收到此错误:
获取: sqlite-ruby-2.2.3.gem (100%) 构建原生扩展。这可能需要一段时间... 错误:安装 sqlite-ruby 时出错:错误:无法构建 gem 原生扩展。
/usr/bin/ruby1.8 extconf.rb 检查 -lsqlite 中的 main()... 不检查 sqlite.h... 否 * extconf.rb 失败 *由于某种原因无法创建 Makefile,可能缺少必要的库和/或头文件。检查 mkmf.log 文件以获取更多详细信息。您可能需要配置选项。
任何解决方案?
好的,所以我想我必须发布一些东西,因为我告诉人们他们是不正确的。
在 sqlite-ruby libsqlite3-dev 的情况下应该这样做。
需要明确的是,ruby-full 伪包仅安装几乎所有选项 ruby 安装的所有“组件”。它对于包含二进制组件的 gem 的依赖关系完全没有任何作用。
要了解 gem 需要哪些开发包,您可以偶尔查看 gem 的规范文件或 rubyforge 上的页面。如果它抱怨未找到特定文件,则进行一些创造性的谷歌搜索(提供这个词通常会有所帮助)应该可以帮助您找到所需的 -dev 包。
这种类型的另一个有用的站点是 ubuntu 包搜索:http ://packages.ubuntu.com/search?mode=exactfilename&suite=intrepid§ion=all&arch=any&searchon=contents&keywords=sqlite.h
另一点值得注意的是,Ubuntu 在这方面支持 Debian,并尝试将名为 ruby-gemname 或类似名称的软件包预构建到 aptitude 中,以简化软件包管理和跟踪 gem 更改。这确实打破了一些 ruby 脚本中的一些要求。我对这个话题有很多咆哮,但我离题了。
如果您安装了 libsqlite3-dev 并且它仍然无法正常工作 - 请确保您使用的是正确的架构 gem(这不一定是自动的,也许未来的功能将是伟大的 gem 开发人员)。
如果您安装了该库并且您确定 gem 上的体系结构是正确的,请发布它挂起的文件,我会看看我能挖掘出什么。
确保您安装了 sqlite3 v3.6.16 或更高版本。Gem 需要 3.6.16 或更高版本来编译 sqlite3-ruby。
您可以通过首先运行
which sqlite3
然后检查您的 sqlite3 的版本/path/to/sqlite3 -version
。