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


356

我正在使用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。


只是一个简单的猜测:您有MySQL的开发文件头吗
DrColossos 2010年

如何获得这些dev文件头?
蒂姆(Tim)2010年

1
我在Ubuntu中做到了以下几点:apt-get install ruby​​-dev ruby​​gems gem install mysql-with-mysql-config = / usr / bin / mysql_config一切正常。
伊万·卡拉斯科

Answers:


757

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

保存我的皮革的文章在这里

这是经过修订的解决方案(请注意,我使用的是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感谢您提供其他信息:)
Brian Lacy

1
当我在尝试使用Rails创建Ruby应用程序时遇到问题时,此方法有效。它抱怨无法安装json和捆绑程序无法继续。安装红宝石开发工作。
2012年

2
除了上面@NoBugs发布的ruby-dev外,我还需要Ubuntu(12.04)上的libmysqlcient-dev。(或者,请参见下面的达米安·诺瓦克(Damian Nowak)的Debian / Ubuntu回答。)
乔恩·加文

1
当我无法安装jekyll时,在RHEL6上为我工作。
戴维·梅森

这帮助我安装了fpm,可能帮助安装了任何基于ruby的软件。我用过yum -y install gcc ruby-devel rubygems
佐尔坦

91

红帽,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应用程序开发的文件
Tim

1
确保需要mysql-devel。问题是除此之外还需要什么。也许尝试一下:fedora-tunisia.org/?q=node/44让我知道它是否有效。
Nowaker

我在这里遇到了这个问题:stackoverflow.com/questions/6297751/…好的解决方案!
凯文·布朗

您所说的是必需的,但需要使用ruby-devel来修复有问题的错误消息。
爱德华·安德森

RedHat系统上的BTW是ruby-devel
texasbruce

50

对于任何在2015年阅读此书的人:如果您偶然安装了软件包ruby2.0,则需要安装匹配项ruby2.0-dev以获取适当的Ruby标头。这同样适用于ruby2.1ruby2.2等。例如:

$ sudo apt-get install ruby2.2-dev

在浅顶软呢帽22:sudo dnf install ruby-devel
杰弗里·德·史密特

谢谢!红宝石有时是如此怪异。
nelsonenzo

红宝石2.3也是如此。
查尔斯·罗珀

24

看来

yum install ruby-devel

足以让我表演

gem install datamapper

然后。

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

yum install gcc gcc-c++

能够构建本机扩展


1
我收到一个非常奇怪的错误,没有明确的消息,这是因为未安装gcc软件包。:(这篇帖子使我记住了这一基本步骤。; P
BrunoJCM 2012年

9

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

xcode-select --install

是的,这就是问题所在。非常感谢!
Eduard Ghinea

然后这个sudo gem install -n /usr/local/bin cocoapods thumbsup
hyd00

8

我在这里找到了解决方案。

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

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


2

红帽,Fedora:

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

2

对于那些仍然遇到问题的人,例如我(我正在使用Ubuntu 16.04),我必须输入以下命令以安装一些bem,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。


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上找到本文。您也可能会找到其他需求的答案。



1

您需要安装以下软件包:

  • 红宝石开发

  • 海湾合作委员会

  • libffi-dev

  • 使

这是Debian发行版的命令:

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


0

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



0

您可能已经弄混了RVM。

试着做:

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

-1

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.