openSUSE 安装compass,mkmf.rb can't find,checking for ffi.h...extconf.rb failed

安装compass时,提示

Fetching: sass-3.4.23.gem (100%)
Successfully installed sass-3.4.23
Fetching: ffi-1.9.18.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing compass:
    ERROR: Failed to build gem native extension.

    current directory: /usr/lib64/ruby/gems/2.1.0/gems/ffi-1.9.18/ext/ffi_c
/usr/bin/ruby.ruby2.1 -r ./siteconf20170501-19647-33n3uw.rb extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib64/ruby/include/ruby.h

extconf failed, exit code 1

Gem files will remain installed in /usr/lib64/ruby/gems/2.1.0/gems/ffi-1.9.18 for inspection.
Results logged to /usr/lib64/ruby/gems/2.1.0/extensions/x86_64-linux/2.1.0/ffi-1.9.18/gem_make.out

找资料有说明是缺少mkmf,而mkmf是存在于ruby dev开发包中的,需要安装 ruby1.9.1-dev版本,可是笔者的电脑中ruby的版本是:ruby 2.1.9p490 (2016-03-30 revision 54437) [x86_64-linux-gnu]

可以通过zypper search命令查看相关的ruby安装包

运行: zypper search ruby*

会列出和ruby相关的软件包,在列表中有:

i | ruby2.1                                                 | An In-> | 软件包  
  | ruby2.1                                                 | An In-> | 源代码包
  | ruby2.1-devel                                           | Devel-> | 软件包  

-dev和-devel 后缀应该都属于开发包,所以笔者运行了: zypper in ruby2.1-devel 

运行的结果是:新安装ruby2.1-devel 和升级libruby2_1-2_1 ruby2.1 ruby2.1-stdlib 3个软件包

再次尝试运行: gem install compass,提示

ERROR:  Error installing compass:
    ERROR: Failed to build gem native extension.

    current directory: /usr/lib64/ruby/gems/2.1.0/gems/ffi-1.9.18/ext/ffi_c
/usr/bin/ruby.ruby2.1 -r ./siteconf20170501-19967-1fry11r.rb extconf.rb
checking for ffi.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

这提示的是缺少 ffi

在上面执行的:zypper serch ruby* 命令的搜索结果中有:

  | ruby2.1-rubygem-fastercsv-testsuite                     | Test -> | 软件包  
  | ruby2.1-rubygem-ffi                                     | Ruby -> | 软件包  
  | ruby2.1-rubygem-ffi-doc                                 | RDoc -> | 软件包

运行: zypper in ruby2.1-rubygem-ffi


最后执行: gem install compass之后,安装成功,暂时还不能直接运行compass命令,因为执行时,提示

If 'compass' is not a typo you can use command-not-found to lookup the package that contains it, like this:
    cnf compass

 

参考资料:

  1. zypper命令使用示例
  2. linux下各种*-dev或*-devel包的作用
  3. 安装compass时出现ERROR: Failed to build gem native extension...... -- mkmf (Load Error)解决办法

转载于:https://www.cnblogs.com/fsong/p/6794055.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用 UNetbootin 可以轻松的把 Linux 操作系统装进 U 盘 你可将U盘插到 USB 接口。 注意:一定要先插U盘再运行 UNetbootin!然后从菜单“应用程序——系统工具”里运行 UNetbootin 软件。然后把你下好的 iso 文件放到U盘里,重启电脑,并设置U盘为第一启动设备,即可启动U盘里的操作系统。 UNetbootin 允许将各种 Linux/BSD 的发行版安装到一个真正的分区,所以它跟一个标准的安装没什么两样,除了它的优势:不需要CD光碟。因此它可以用来安装一个标准的双系统,或完全由 GNU/Linux 取代现有的操作系统。 UNetbootin 中文版 UNetbootin 中文版 功能 UNetbootin 能够创建可引导 Live USB 磁盘。 使用 Unetbootin 选择一个 ISO 文件或下载一个发行版,并选择目标磁盘(USB 磁盘或硬盘),然后重启一下就可以了。如果您的 USB 磁盘没有出现在列表中,请将它格式化为 FAT32 文件系统。 Unetbootin 它是跨平台的(可用于Windows 和 Linux),使用 Syslinux 进行非破坏性安装(不格式化设备)。它支持主流的 Linux 发行版,如Ubuntu,Fedora,openSUSE,CentOS,Debian,Gentoo,Linux Mint,Arch Linux,Mandriva,Mepis,Slackware 以及 FreeDOS,FreeBSD 和 NetBSD。它可以加载各种系统实用程序,如 Ophcrack,BackTrack。其他操作系统可以通过预先下载的 ISO 映像或软盘/硬盘驱动器磁盘映像文件加载。 更多信息 看看 UNetbootin 的功能和截图。因为它是开源的,所以你可以免费下载它。这是一个生活项目,一个生活社区正在工作。如果您喜欢这个想法,如果您希望参与软件的未来开发,如果您希望捐赠给开发团队,或者如果您想向开发人员表达您的书面热情,有很多方法可以帮助和支持开发团队! 指导和帮助 关于使用 UNetbootin 的问题?为了得到答案,您有两种方式:您可以查看官方资源(官方项目网站,官方论坛和常见问题),或通过自己的参与获取最终用户的知识:教程视频,非官方FAQ和有关软件的最新博主文章。 其他版本和替代方案: 由于有许多操作系统,软件的某些特定端口可以存在。还可以看看可以感兴趣的其他软件替代品。他们可以像 UNetbootin 或专有(免费软件,共享软件)那样开放,并且可以满足您的需求或需求。 其它同类软件: Linux 可启动 U 盘制作工具 Universal USB Installer 1.9.7.9 中文编译版 LiLi USB Creator 2.9.4 中文特别版 Linux 安装助手工具

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值