如何安装json gem - 无法构建gem原生扩展 [英] How to install json gem - Failed to build gem native extension

查看:176
本文介绍了如何安装json gem - 无法构建gem原生扩展的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在我的ubuntu linux服务器上部署一个rails应用程序。我使用capistrano和bundler,当它安装到gems时,它会失败,并显示以下错误信息:

 安装json(1.7.7 )与原生扩展
Gem :: Installer :: ExtensionBuildError:错误:无法构建gem本机扩展。

/opt/ruby-enterprise-1.8.7-2012.02/bin/ruby extconf.rb
创建Makefile

make
/ usr / bin / gcc -I。 -I / opt / local / include -I / opt / ruby​​-enterprise-1.8.7- 2012.02 / lib / ruby​​ / 1.8 / i686-linux -I / opt / ruby​​-enterprise-1.8.7-2012.02 / lib / ruby /1.8/i686-linux -I。 -D_FILE_OFFSET_BITS = 64 -fPIC -g -O3 -Wall -c parser.c
在/usr/include/i386-linux-gnu/bits/posix1_lim.h:157:0包含的文件中,
from /usr/include/limits.h:145,
来自/usr/lib/gcc/i686-linux-gnu/4.6/include-fixed/limits.h:169,
来自/ usr / lib / gcc / i686-linux-gnu / 4.6 / include-fixed / syslimits.h:7,
来自/usr/lib/gcc/i686-linux-gnu/4.6/include-fixed/limits.h: 34,
来自/opt/ruby-enterprise-1.8.7-2012.02/lib/ruby/1.8/i686-linux/ruby.h:95,
来自../fbuffer/fbuffer.h: 6,来自parser.rl的
:1:
/usr/include/i386-linux-gnu/bits/local_lim.h:39:26:致命错误:linux / limits.h:没有这样的文件或目录
编译终止。
make:*** [parser.o]错误1

我正在运行ruby enterprise版本1.8.7,不能升级红宝石,而没有很多工作升级其他网站,所以现在不是一种选择。我尝试了apt-get install ruby​​-dev,但它没有帮助(我不确定这是否是正确的事情)。

解决方案

我想你需要安装这些包之一:

  $ apt-file search limits.h | grep'linux / limits.h'
linux-headers-2.6.32-5-common:/usr/src/linux-headers-2.6.32-5-common/include/linux/limits.h
linux-headers-2.6.32-5-common-openvz:/usr/src/linux-headers-2.6.32-5-common-openvz/include/linux/limits.h
linux-headers- 2.6.32-5-common-vserver:/usr/src/linux-headers-2.6.32-5-common-vserver/include/linux/limits.h
linux-headers-2.6.32-5- common-xen:/usr/src/linux-headers-2.6.32-5-common-xen/include/linux/limits.h
linux-libc-dev:/usr/include/linux/limits.h


I'm trying to deploy a rails app to my ubuntu linux server. I'm using capistrano and bundler and when it gets to installing gems it fails with this error:

Installing json (1.7.7) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /opt/ruby-enterprise-1.8.7-2012.02/bin/ruby extconf.rb 
creating Makefile

make
/usr/bin/gcc  -I. -I/opt/local/include -I/opt/ruby-enterprise-1.8.7- 2012.02/lib/ruby/1.8/i686-linux -I/opt/ruby-enterprise-1.8.7-2012.02/lib/ruby/1.8/i686-linux -I. -D_FILE_OFFSET_BITS=64  -fPIC -g -O3   -Wall  -c parser.c
In file included from /usr/include/i386-linux-gnu/bits/posix1_lim.h:157:0,
             from /usr/include/limits.h:145,
             from /usr/lib/gcc/i686-linux-gnu/4.6/include-fixed/limits.h:169,
             from /usr/lib/gcc/i686-linux-gnu/4.6/include-fixed/syslimits.h:7,
             from /usr/lib/gcc/i686-linux-gnu/4.6/include-fixed/limits.h:34,
             from /opt/ruby-enterprise-1.8.7-2012.02/lib/ruby/1.8/i686-linux/ruby.h:95,
             from ../fbuffer/fbuffer.h:6,
             from parser.rl:1:
/usr/include/i386-linux-gnu/bits/local_lim.h:39:26: fatal error: linux/limits.h: No such file or directory
compilation terminated.
make: *** [parser.o] Error 1

I am running ruby enterprise edition 1.8.7 and can't upgrade ruby without a lot of work upgrading other sites so that's not an option right now. I tried apt-get install ruby-dev but it didn't help (I'm not sure that was the right thing anyway).

解决方案

I think you need to install one of this packages :

$ apt-file search limits.h | grep 'linux/limits.h'
linux-headers-2.6.32-5-common: /usr/src/linux-headers-2.6.32-5-common/include/linux/limits.h
linux-headers-2.6.32-5-common-openvz: /usr/src/linux-headers-2.6.32-5-common-openvz/include/linux/limits.h
linux-headers-2.6.32-5-common-vserver: /usr/src/linux-headers-2.6.32-5-common-vserver/include/linux/limits.h
linux-headers-2.6.32-5-common-xen: /usr/src/linux-headers-2.6.32-5-common-xen/include/linux/limits.h
linux-libc-dev: /usr/include/linux/limits.h

这篇关于如何安装json gem - 无法构建gem原生扩展的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆