2013-05-04 89 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

相關問題