在Ubuntu上安装使用本机扩展的宝石,通过RVM安装Ruby 1.9.2

尝试安装ffi宝石时出现错误
~ - 16:54>gem i ffi
Building native extensions.  This Could take a while...
ERROR:  Error installing ffi:
        ERROR: Failed to build gem native extension.

        rake RUBYARCHDIR=/home/mdemare/.rvm/gems/ruby-1.9.2-p136/gems/ffi-1.0.6/lib RUBYLIBDIR=/home/mdemare/.rvm/gems/ruby-1.9.2-p136/gems/ffi-1.0.6/lib
/home/mdemare/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/rubygems.rb:370:in `bin_path': can't find gem rake ([">= 0"]) with executable rake (Gem::GemNotFoundException)
        from /home/mdemare/.rvm/gems/ruby-1.9.2-p136/bin/rake:19:in `<main>'

Gem files will remain installed in /home/mdemare/.rvm/gems/ruby-1.9.2-p136/gems/ffi-1.0.6 for inspection.
Results logged to /home/mdemare/.rvm/gems/ruby-1.9.2-p136/gems/ffi-1.0.6/gen/gem_make.out

在使用本机扩展安装宝石时,我经常出现各种错误,所以我认为我的Ubuntu安装有一些破坏,但我不知道什么.我会发布您需要的任何信息来诊断问题.

编辑:当我cd到ffi宝石(在第二行但最后一行提到),并在第6行运行rake行,我得到“无法找到RubyGem rake-compiler”.

宝石我耙编译器,再次运行耙机,我得到这个:

configure: error: source directory already configured; run "make distclean" there first
make: *** [/home/mdemare/.rvm/gems/ruby-1.9.2-p136/gems/ffi-1.0.6/build/x86_64-linux/ffi_c/1.9.2/libffi/.libs/libffi_convenience.a] Error 1
rake aborted!
Command Failed with status (2): [make...]

更新:

这些是我的耙子gemspecs

~ - 10:59>find ~/.rvm/ -name 'rake-0.8.7.gemspec'
~/.rvm/gems/ruby-1.9.2-p136/specifications/rake-0.8.7.gemspec
~/.rvm/gems/ruby-1.9.2-p136@global/specifications/rake-0.8.7.gemspec
~/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/gems/1.9.1/specifications/rake-0.8.7.gemspec

最后一个是宝石看起来,但是gemspec与第一个不同,不包括可执行文件.复制长的一个并不完全解决问题 – 我得到一个没有找到rake可执行文件文件.

在波士顿黑客日,当我试图安装Vagrant(FFI是一个依赖)的时候,这让我感到很多恶化.我最终浪费了很多时间,我切换机器来解决这个问题.

事实之后,我发现了一个恶作剧(虽然我确定有一个更好的解决方案).错误信息抱怨的文件

~/.rvm/gems/ruby-1.9.2-p180/bin/rake

不同于其他类似的副本,因为它缺少路径设置的东西在头上,所以我从其中一个文件复制这些行:

[通过@ danv在下面的答案进行泛型化.感谢改进!]

ENV['GEM_HOME']=ENV['GEM_HOME'] || '~/.rvm/gems/ruby-1.9.2-p180'
ENV['GEM_PATH']=ENV['GEM_PATH'] || '~/.rvm/gems/ruby-1.9.2-p180:~/.rvm/gems/ruby-1.9.2-p180@global'
ENV['PATH']='~/.rvm/gems/ruby-1.9.2-p180/bin:~/.rvm/gems/ruby-1.9.2-p180@global/bin:~/.rvm/rubies/ruby-1.9.2-p180/bin:' + ENV['PATH']

这固定了我.这是一个新的Ubuntu 10.10安装,没有认的Ruby安装(可能是问题的一部分)和使用RVM安装的Ruby 1.9.2.许多其他宝石安装正常,包括需要本地编译的宝石,所以问题是FFI特有的.

相关文章

目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
参见:https://blog.csdn.net/weixin_38883338/article/deta...
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...