我正在尝试启动并运行 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 文件以了解更多详细信息。您可能需要配置选项。
有什么解决办法吗?
答案1
好的,所以我想我必须发布一些内容,因为我告诉大家他们是错误的。
在 sqlite-ruby 的情况下,libsqlite3-dev 应该可以做到这一点。
需要明确的是,ruby-full 伪包仅安装几乎所有选项 ruby 安装所需的所有“组件”。对于包含二进制组件的 gem 的依赖性满足,它完全没有做任何事情。
要了解 gem 需要哪些 dev 包,您可以偶尔检查 gem 的 specfile 或 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 上的架构是正确的,请发布它挂起的文件,我会看看能找到什么。
答案2
确保安装了 sqlite3 v3.6.16 或更高版本。Gem 需要 3.6.16 或更高版本才能编译 sqlite3-ruby。
which sqlite3
您可以通过先运行然后运行来检查 sqlite3 的版本/path/to/sqlite3 -version
。