65

我正在尝试在带有 Ruby 1.8.6、Rails 2.2.2、gem 1.3 和 sqlite-3.5.9 的 Fedora 9 Linux 机器上安装 SQLite gem。这是我正在运行的命令及其结果:

sudo gem install sqlite3-ruby
Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3-ruby:
    ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb install sqlite3-ruby
can't find header files for ruby.

Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/ext/sqlite3_api/gem_make.out

gem_make.out只是重复已经发送到控制台的内容。我怎样才能安装这个宝石?

4

15 回答 15

138

SQLite RubyGem 实际上并不是一个Ruby Gem,它是一个“ C Gem”,IOW 它是用 C 编写的。这意味着当你安装它时,它必须被编译并链接到 Ruby 解释器,为了做到一点,它需要Ruby 解释器的 C 头文件。

如果你自己编译 Ruby,这些头文件会被自动安装,然而,在 RedHat-ish 系统中,这些头文件通常打包在一个单独的包中,称为<whatever>-dev. 因此,在这种情况下,您将需要安装ruby-dev软件包,可能还需要安装libsqlite3-dev(Ubuntu) 或sqlite-devel(Fedora) 软件包。

但是,最好只安装操作系统的预打libsqlite3-ruby包包,这样所有依赖项都会自动得到满足。

(注意:所有的包名都是凭空而来的,在你的系统上可能会有所不同。)

于 2009-01-07T18:04:42.123 回答
13

您可能需要 ruby​​ 开发包。对于 Ubuntu,您必须安装包含 ruby​​ 头文件的 ruby​​1.8-dev。一个快速的谷歌说 yum 包是 ruby​​-devel。所以运行这个:

sudo yum install ruby​​-devel

于 2009-01-08T02:55:43.313 回答
10

我在我的 Fedora 13 盒子上安装 sqlite3-ruby gem 时遇到问题。sudo yum install sqlite-devel后修复

于 2011-01-06T10:42:07.623 回答
9

当我遇到这个问题时:

gem install sqlite3 -v '1.3.9'
Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3:
    ERROR: Failed to build gem native extension.

对我来说,安装“ libsqlite3-dev ”:

apt-get install libsqlite3-dev
于 2016-05-12T12:33:46.633 回答
6
sudo apt-get install ruby-dev

为我修好了。

于 2010-12-18T10:31:28.107 回答
3

在 Ubuntu 9 和 10 上尝试:

sudo apt-get install ruby-dev
sudo apt-get install sqlite3-dev

然后运行

gem install sqlite3
于 2011-08-23T21:19:05.507 回答
2

为 Fedora 操作系统运行以下命令:

yum install rubygem-sqlite3
于 2011-07-20T06:08:56.347 回答
2

在 alpine 上,您需要安装该sqlite-dev软件包。

于 2018-02-13T09:45:02.180 回答
2

我也遇到了同样的问题,问题是您的 Linux 安装需要安装 SQLite3 的开发库才能构建 gem。

这是我解决问题的方法

打开终端并运行以下命令

sudo apt-get install sqlite3

sudo apt-get install libsqlite3-dev

然后尝试使用此命令再次安装 Sqlite3 gem

gem install sqlite3

就这样。

我希望这有帮助

于 2019-08-07T06:41:01.040 回答
1

你有构建 sqlite3-ruby 所需的所有源代码吗?Gem 正在尝试编译一些 C 代码,但找不到标头。如果您愿意放弃编译,您可能可以为 sqlite3-ruby 使用 fedora rpm(我不使用 fedora,但我确定存在)。就个人而言,对于 ruby​​ 的东西,我更喜欢使用 gem 而不是发行版的包装系统。

于 2009-01-07T17:44:00.057 回答
0

我对 Fedora 不是很熟悉,但是在 Ubuntu 中,当您安装软件包时,您有 apt-get,并且您必须安装包含 gcc 和其他 C 编译工具的 build-essentials。我会说这可能是您的问题,然后您将了解如何在 Fedora 上使用 RPM 或 apt-get 进行安装。

于 2009-01-07T17:53:51.630 回答
0

我通过奇怪地安装'gcc'解决了我的OLPC(Fedora 9)上的问题。似乎它应该是那些开发包之一,但不是。

另外,关于其他包,后缀是“-devel”,而不是“-dev”,所以请确保你得到正确的结尾:“ruby-devel”,“sqlite-devel”......

安装完成后,如果在尝试运行各种 rails 脚本(例如:脚本/服务器或脚本/控制台)时遇到有关 gem 太旧“< 1.3.1”的错误,请使用谷歌“upgrade_rubygems”来解决该问题。 ..

HTH...

于 2009-05-15T21:48:32.693 回答
0

我遇到了同样的问题……我没有在 unbuntu 上使用突触的缺失部分。

对我来说,关键包是 libsqlite-ruby1.9.1 ...我在以下位置记录了我的经验(供参考): Sqlite3-gem-error-during-bundle-install

于 2010-12-21T19:23:57.607 回答
0

运行“sudo yum install sqlite-devel”,然后运行“gem install sqlite3”。我的 Fedora 15 也有同样的问题。

于 2011-08-01T05:38:51.693 回答
0

我在 Fedora 29 上生成 react-rails 应用程序后运行时遇到此错误bundle install。我能够通过运行确定合适的开发包dnf search sqlite3,然后安装它dnf install libsqlite3x-devel。这为我修好了。

于 2019-04-15T15:50:45.180 回答