2013-05-04 94 views
1

具有原生扩展的私有Gem我已经从Ruby 1.8.2开始工作良好,然后1.9.3现在无法在Wird模式下安装到Ruby 2.0.0。它不是安装必需的共享对象.so文件,而是复制一个可执行文件。宝石来源没有变化,回到Ruby 1.9.3(并且它是宝石)工作正常。原生Gem在1.9.3上安装正常但在2.0.0上失败

下面是从gem install 2.0.0-P0详细输出相关:

linking shared-object mygem/mygem.so 
make install 
/usr/bin/install -c -m 0755 mygem.so /home/remus/.rvm/gems/ruby-2.0.0-p0/gems/mygem-0.1.12/lib/mygem 
installing default mygem libraries 

Successfully installed mygem-0.1.12 
... 
1 gem installed 

而这些安装构件:

$ ls -al 
total 2252 
-rwxr-xr-x 1 remus remus 2289443 May 4 13:08 mygem 
-rw-rw-r-- 1 remus remus  62 May 4 13:08 mygem.rb 

为了比较的1.9.3-P194输出为:

linking shared-object mygem/mygem.so 

make install 
/usr/bin/install -c -m 0755 mygem.so /home/remus/.rvm/gems/ruby-1.9.3-p194/gems/mygem-0.1.12/lib/mygem 
installing default mygem libraries 
Successfully installed mygem-0.1.12 
1 gem installed 

而且安装的工件:

ls -al 
total 16 
drwxrwxr-x 2 remus remus 4096 May 4 13:06 mygem 
-rw-rw-r-- 1 remus remus 62 May 4 13:06 mygem.rb 
ls -al mygem 
total 2760 
-rwxr-xr-x 1 remus remus 2810959 May 4 13:06 mygem.so 
  • 红宝石2.0.0-P0:耙(10.0.4,0.9.6),耙编译器(0.8.3),锄(3.6.0)
  • 红宝石1.9.3-P194 :耙(10.0.4,10.0.3,0.9.2.2),耙编译器(0.8.1),锄头(3.4.0,3.0.8)
+0

你能否提供一份你的'mygem.gemspec'? – 2013-05-04 22:43:04

回答

1

所以,没有看到你的mygem.gemspec文件,我不能确切地说,但我怀疑你在那里列出了错误的文件。例如,这里的基础上,一个用于NMatrix,也使用rake-compiler删节gemspec:

lib = File.expand_path('../lib/', __FILE__) 
$:.unshift lib unless $:.include?(lib) 

require 'nmatrix/version' 

Gem::Specification.new do |gem| 
    gem.name = "nmatrix" 

    gem.files   = `git ls-files`.split("\n") 
    gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") 

    # vvv THIS LINE vvv 
    gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) } 
    # ^^^ THIS LINE ^^^ 

    gem.extensions = ['ext/nmatrix/extconf.rb'] 
    gem.require_paths = ["lib"] 

    gem.required_ruby_version = '>= 1.9.2' 

    gem.add_development_dependency 'rake', '~>0.9' 
    gem.add_development_dependency 'bundler' 
    gem.add_development_dependency 'rake-compiler', '~>0.8.1' 
end 

TL;博士:你可以尝试寻找你行gem.executables,并确保你有包括相关的文件。

+0

那么,它是如何与#each_with_indices方法?顺便说一句。我无法在家中安装NMatrix,我会在我的其他机器上尝试。 – 2013-05-05 09:29:06

相关问题