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

Tim*_*Tim 350 ruby mysql rubygems

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

gem install mysql
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

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
Run Code Online (Sandbox Code Playgroud)

这有什么不对?在安装ruby 1.8.7.和最新的rubygems 1.3.7.

Bri*_*acy 755

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

对于使用Debian样式打包的Debian和其他发行版,ruby开发头文件通过以下方式安装:

sudo apt-get install ruby-dev
Run Code Online (Sandbox Code Playgroud)

对于Ubuntu,ruby开发头文件是通过以下方式安装的:

sudo apt-get install ruby-all-dev
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get install ruby2.2-dev
Run Code Online (Sandbox Code Playgroud)

(2.2是你想要的Ruby版本)

  • 除了@NoBugs上面发布的ruby-dev之外,我还需要Ubuntu(12.04)上的libmysqlcient-dev.(或者,请看下面的Damian Nowak的Debian/Ubuntu答案.) (2认同)

Now*_*ker 91

红帽,Fedora:

yum -y install gcc mysql-devel ruby-devel rubygems
gem install -y mysql -- --with-mysql-config=/usr/bin/mysql_config
Run Code Online (Sandbox Code Playgroud)

Debian,Ubuntu:

apt-get install libmysqlclient-dev ruby-dev
gem install mysql
Run Code Online (Sandbox Code Playgroud)

Arch Linux:

pacman -S libmariadbclient
gem install mysql
Run Code Online (Sandbox Code Playgroud)


Dro*_* S. 50

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

$ sudo apt-get install ruby2.2-dev
Run Code Online (Sandbox Code Playgroud)


and*_*rej 24

似乎是

yum install ruby-devel
Run Code Online (Sandbox Code Playgroud)

对我来说足够了

gem install datamapper
Run Code Online (Sandbox Code Playgroud)

然后.

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

yum install gcc gcc-c++
Run Code Online (Sandbox Code Playgroud)

能够构建本机扩展


Tim*_*Tim 8

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

# yum install mysql-devel gcc make
# gem install mysql -- --with-mysql-config=/usr/bin/mysql_config
Run Code Online (Sandbox Code Playgroud)


qkr*_*ger 8

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

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

sudo apt-get install ruby
sudo apt-get install rubygems
sudo apt-get install ruby-dev
Run Code Online (Sandbox Code Playgroud)

在我成功运行之前

sudo gem install jekyll
Run Code Online (Sandbox Code Playgroud)


Aji*_*ngh 6

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

xcode-select --install
Run Code Online (Sandbox Code Playgroud)