【问题标题】:Why can't I install the SQLite gem?为什么我不能安装 SQLite gem?
【发布时间】:2010-09-30 02:10:55
【问题描述】:

我正在尝试在装有 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 只是重复已经发送到控制台的内容。如何安装这个 gem?

【问题讨论】:

  • 我也经常遇到这个错误!!
  • 错误提示是“can't find header files for ruby​​”……这意味着你需要ruby的开发包。
  • @salt.racer / 那里的任何一个 - 你能发布什么包(主要)是必需的。

标签: ruby-on-rails ruby sqlite gem


【解决方案1】:

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

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

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

(注意:所有包名都是凭空出现的,可能在您的系统上有所不同。)

【讨论】:

  • 该死的太酷了,这实际上是正确的答案...我在尝试安装 SqlLite 时迷路了,问题是每分钟都会产生新的错误消息。现在,如果提问者只是将其标记为正确答案,我们就成功了。
  • 在 Ubuntu 上我做了 apt-get install libsqlite3-ruby 并且它运行良好。以 root 身份,当然...
  • 或者如果你想安装 gem,你需要 apt-get install ruby​​-dev,就像 Jorg 说的那样。
  • 再一次,Jorg,您的信息对我的学习很有帮助。再次感谢。
  • 太棒了 - 这应该记录在 Ruby on Rails 常见问题解答中!
【解决方案2】:

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

sudo yum install ruby​​-devel

【讨论】:

    【解决方案3】:

    在我的 fedora 13 机器上安装 sqlite3-ruby gem 时遇到问题。 sudo yum install sqlite-devel

    后已修复

    【讨论】:

      【解决方案4】:

      当我遇到这个问题时:

      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
      

      【讨论】:

      • 这为我修好了! +1
      • 是的,这就是我的答案
      【解决方案5】:
      sudo apt-get install ruby-dev
      

      帮我修好了。

      【讨论】:

      • 这个技巧为我解决了这个问题。谢谢。
      【解决方案6】:

      在 Ubuntu 9 和 10 上尝试:

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

      然后运行

      gem install sqlite3
      

      【讨论】:

        【解决方案7】:

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

        yum install rubygem-sqlite3
        

        【讨论】:

        • 这有效,但在“sudo yum install sqlite-devel”之后
        • 是的,但这取决于 ruby​​-2.4 并且不使用 rbenv 安装的 ruby​​
        【解决方案8】:

        在 alpine 上,你需要安装 sqlite-dev 包。

        【讨论】:

          【解决方案9】:

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

          这是我解决问题的方法

          打开终端并运行以下命令

          sudo apt-get install sqlite3
          
          sudo apt-get install libsqlite3-dev
          

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

          gem install sqlite3
          

          就是这样。

          我希望这会有所帮助

          【讨论】:

            【解决方案10】:

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

            【讨论】:

            • mysql 头文件的 fedora rpm 类似于 'mysql-dev',所以正确的 sqlite rpm 可能是 'sqlite3-dev'
            • 我现在使用的是 FreeBSD 7.1,并且我安装了 sqlite3-3.6.4 端口,如果我没记错的话,它提供了 gem 所需的一切。我正在尝试自己检查 Rails 2.2.2。祝埃里克好运!
            【解决方案11】:

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

            【讨论】:

            • 在 Fedora 上很好用,但这不是问题所在。这是 libsqlite3-ruby 的问题。
            【解决方案12】:

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

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

            安装后,如果在尝试运行各种 rails 脚本(例如:script/server 或 script/console)时遇到有关 gem 太旧“

            HTH...

            【讨论】:

              【解决方案13】:

              运行“sudo yum install sqlite-devel”,然后运行“gem install sqlite3”。在我的 Fedora 15 上遇到了同样的问题。

              【讨论】:

                【解决方案14】:

                我也遇到了同样的问题……我在 unbuntu 上使用了突触,而不是对缺失的部分进行宝石处理。

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

                【讨论】:

                  【解决方案15】:

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

                  【讨论】:

                    猜你喜欢
                    • 2018-12-12
                    • 1970-01-01
                    • 2013-11-30
                    • 1970-01-01
                    • 1970-01-01
                    • 2017-07-13
                    • 1970-01-01
                    • 2018-05-14
                    • 2021-02-26
                    相关资源
                    最近更新 更多