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

时间:2010-11-29 13:58:15

标签: mysql ruby rubygems

我正在使用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。和最新的rubygems 1.3.7。

18 个答案:

答案 0 :(得分:748)

对于那些可能会被接受的答案混淆的人,就像我一样,你还需要安装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版本)

答案 1 :(得分:91)

Red Hat,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

答案 2 :(得分:50)

对于在2015年阅读此内容的任何人:如果您碰巧安装了软件包ruby2.0,则需要安装匹配的ruby2.0-dev以获取相应的Ruby标头。 ruby2.1ruby2.2等也是如此。例如:

$ sudo apt-get install ruby2.2-dev

答案 3 :(得分:24)

似乎

yum install ruby-devel

足以让我执行

gem install datamapper

之后。

您可能需要安装另一个软件包:

yum install gcc gcc-c++

能够构建原生扩展

答案 4 :(得分:8)

我找到了解决方案here

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

答案 5 :(得分:8)

这篇文章对我有所帮助。非常感谢。

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

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

才能成功运行

sudo gem install jekyll

答案 6 :(得分:5)

如果未正确安装xcode工具,MAC用户可能会遇到此问题。 以下是解决问题的命令。

xcode-select --install

答案 7 :(得分:4)

如果您安装了gem并且没有安装rails并且无法安装rails。然后安装ruby dev lib。

sudo apt-get install ruby-dev

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

答案 8 :(得分:2)

Red Hat,Fedora:

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

答案 9 :(得分:1)

我的初步解决方案是通过安装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找到此处的内容。您也可以找到其他需求的答案。

答案 10 :(得分:1)

对于那些仍然遇到问题的人,比如我(我使用的是Ubuntu 16.04),我必须输入以下命令才能获得一些像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这样的宝石。

答案 11 :(得分:1)

sudo apt-get install ruby-dev

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

答案 12 :(得分:0)

在openSUSE中

zypper in ruby-devel

对我有用:)

答案 13 :(得分:0)

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

答案 14 :(得分:0)

这对我有用:

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

答案 15 :(得分:0)

您需要安装以下软件包:

  • ruby​​-dev

  • gcc

  • libffi-dev

  • make

这是debian发行版的命令:

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

答案 16 :(得分:0)

您可能已经弄混了RVM。

尝试做:

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

答案 17 :(得分:-1)

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

  

export PATH = $ PATH:/ usr / src / ruby​​-xxxxxx