gem install:无法构建 gem 原生扩展(找不到头文件)

Posted

技术标签:

【中文标题】gem install:无法构建 gem 原生扩展(找不到头文件)【英文标题】:gem install: Failed to build gem native extension (can't find header files) 【发布时间】:2011-05-17 07:24:02 【问题描述】:

我正在使用 Fedora 14,并且安装并运行了 mysql 和 MySQL 服务器 5.1.42。 现在我尝试以 root 用户身份执行此操作:

gem install mysql

但我收到此错误:

Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
    ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/ruby.h


Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/mysql-2.8.1 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/mysql-2.8.1/ext/mysql_api/gem_make.out

这里有什么问题?在安装的 ruby​​ 1.8.7 中。以及最新的 ruby​​gems 1.3.7。

【问题讨论】:

只是一个快速的猜测:你有 MySQL 的开发文件头 如何获取这些开发文件头? 我在 Ubuntu 中做了以下操作: apt-get install ruby​​-dev ruby​​gems gem install mysql -- with-mysql-config=/usr/bin/mysql_config 一切正常。 【参考方案1】:

对于那些可能对接受的答案感到困惑的人,就像我一样,您还需要安装 ruby​​ 标头 [ruby-devel]。

拯救我的文章是here。

这是修改后的解决方案(注意我使用的是 Fedora 13):

yum -y install gcc mysql-devel ruby-devel rubygems
gem install -y mysql -- --with-mysql-config=/usr/bin/mysql_config

对于 Debian 和其他使用 Debian 风格打包的发行版,ruby 开发头文件由以下人员安装:

sudo apt-get install ruby-dev

对于 Ubuntu,ruby 开发头文件由以下方式安装:

sudo apt-get install ruby-all-dev

如果您使用的是早期版本的 ruby​​(例如 2.2),那么您将需要运行:

sudo apt-get install ruby2.2-dev

(其中 2.2 是您想要的 Ruby 版本)

【讨论】:

@NoBugs 感谢您提供更多信息 :) 当我在尝试使用 ruby​​ on rails 创建应用程序时遇到问题时,此方法有效。它抱怨它如何无法安装 json 并且 bundler 无法继续。安装 ruby​​-devel 有效。 除了上面@NoBugs 发布的 ruby​​-dev,我还需要 Ubuntu (12.04) 上的 libmysqlcient-dev。 (或者,请参见下面 Damian Nowak 的 Debian/Ubuntu 回答。) 当我在安装 jekyll 时遇到问题时在 RHEL6 上为我工作。 这帮助我安装了 fpm,可能有助于安装任何基于 ruby​​ 的软件。我用yum -y install gcc ruby-devel rubygems【参考方案2】:

红帽、Fedora:

yum -y install gcc mysql-devel ruby-devel rubygems
gem install -y mysql -- --with-mysql-config=/usr/bin/mysql_config

Debian、Ubuntu:

apt-get install libmysqlclient-dev ruby-dev
gem install mysql

Arch Linux:

pacman -S libmariadbclient
gem install mysql

【讨论】:

是这个吗? mysql-devel.i686 : MySQL 应用程序开发文件 肯定需要mysql-devel。问题是除此之外还需要什么。也许试试这个:fedora-tunisia.org/?q=node/44 让我知道它是否有效。 我刚刚遇到了这个问题:***.com/questions/6297751/…很好的解决方案! 你说的是必需的,但修复有问题的错误消息需要 ruby​​-devel。 RedHat 系统上的 BTW 是 ruby-devel【参考方案3】:

对于 2015 年阅读本文的任何人:如果您碰巧安装了包 ruby2.0,则需要安装匹配的 ruby2.0-dev 以获得适当的 Ruby 标头。 ruby2.1ruby2.2 等也是如此。例如:

$ sudo apt-get install ruby2.2-dev

【讨论】:

在 Fedora 22 上:sudo dnf install ruby-devel 谢谢!红宝石有时很奇怪。 Ruby 2.3 也是如此。【参考方案4】:

看来

yum install ruby-devel

足够我表演了

gem install datamapper

之后。

您可能需要安装其他软件包:

yum install gcc gcc-c++

能够构建原生扩展

【讨论】:

我收到了一个非常奇怪的错误,没有明确的消息,这是因为没有安装 gcc 包。 :(这篇文章让我想起了这个基本步骤。;P【参考方案5】:

当 xcode 工具未正确安装时,MAC 用户可能会遇到此问题。 下面是解决这个问题的命令。

xcode-select --install

【讨论】:

是的,这就是问题所在。非常感谢! 然后这个sudo gem install -n /usr/local/bin cocoapods thumbsup【参考方案6】:

我找到了解决方案here。

# yum install mysql-devel gcc make
# gem install mysql -- --with-mysql-config=/usr/bin/mysql_config

【讨论】:

【参考方案7】:

这篇文章帮助了我。非常感谢。

在 Linux (Ubuntu 12.10) 上我需要运行

sudo apt-get install ruby
sudo apt-get install rubygems
sudo apt-get install ruby-dev

在我成功运行之前

sudo gem install jekyll

【讨论】:

【参考方案8】:

如果您安装了 gem 和 ruby​​,但无法安装 rails,请安装 ruby​​ dev lib。

sudo apt-get install ruby-dev

它对我有用。我尝试了不同的解决方案。

【讨论】:

我有 Ubuntu 16.04LTS。我认为,其他以前的版本也是如此。【参考方案9】:

红帽、Fedora:

sudo dnf -y install gcc-c++ redhat-rpm-config ruby-devel gcc mysql-devel rubygems

【讨论】:

【参考方案10】:

对于那些仍然遇到问题的人,比如我(我使用的是 Ubuntu 16.04),我必须输入以下命令才能安装一些 gem,如 bcrypt、pg 和其他。除了一个之外,它们都与上面的相似。

sudo apt-get install ruby-dev -y
sudo apt-get install libpq-dev -y
sudo apt-get install libmysqlclient-dev
sudo apt-get install build-essential patch -y

这让我可以安装像 PG、bcrypt 和 recaptcha 这样的 gem。

【讨论】:

【参考方案11】:

我最初的解决方案是通过安装ruby-develpatchrubygems 来解决上述错误。

我的问题有点不同,因为 bcrypt 3.1.11 在 Fedora 23 上编译和安装仍然存在问题。我需要额外的软件包。因此,在确保我安装了上述内容之后,我仍然遇到问题:

gcc: error: conftest.c: No such file or directory

gcc: error: /usr/lib/rpm/redhat/redhat-hardened-cc1: No such file or directory

从这里我必须执行以下操作:

我确保我不缺少任何 C 编译器工具 sudo dnf group install "C Development Tools and Libraries"

然后我运行 sudo dnf install redhat-rpm-config 来解决上面列出的 gcc 问题。

您可以在Fedore Project 上找到一篇文章。您还可以找到其他需求的答案。

【讨论】:

【参考方案12】:
sudo apt-get install ruby-dev

这个命令为我解决了这个问题!

【讨论】:

【参考方案13】:

您需要安装以下软件包:

ruby 开发

gcc

libffi-dev

制作

这是 debian 发行版的命令:

 sudo apt install gcc ruby-dev rubygems libgmp-dev libgmp3-dev make 

【讨论】:

【参考方案14】:

在 openSUSE 中:

zypper in ruby-devel

对我有用:)

【讨论】:

【参考方案15】:

需要安装redhat-rpm-config 到。我想它可以解决你的问题!

【讨论】:

【参考方案16】:

这对我有用:

yum -y install gcc mysql-devel ruby-devel rubygems

【讨论】:

【参考方案17】:

你可能搞砸了 RVM。

尝试做:

\curl -sSL https://get.rvm.io | bash -s stable --rails

【讨论】:

【参考方案18】:

只是在我的 PATH 中添加 ruby​​.h 文件的路径 例如:

导出 PATH=$PATH:/usr/src/ruby-xxxxxx

【讨论】:

以上是关于gem install:无法构建 gem 原生扩展(找不到头文件)的主要内容,如果未能解决你的问题,请参考以下文章

gem install:无法构建 gem 原生扩展(找不到头文件)

在 OSX 上安装 rmagick gem 时出错 - 错误:无法构建 gem 原生扩展

错误:无法在 Mavericks 上构建 gem 原生扩展

gem install rmagick -v 2.13.1 错误无法在 Mac OS 10.9.1 上构建 gem 本机扩展

puma gem - 无法构建 gem 原生扩展

Gem::Ext::BuildError: 错误: 无法构建 gem 原生扩展。 - 塔林杜