Ruby 本机gem在1.9.3上安装良好,但在2.0.0上安装失败
从ruby 1.8.2到1.9.3,我一直使用的带有本机扩展的私有gem运行良好,但现在无法在wird模式下安装到ruby 2.0.0上。它不安装所需的共享对象Ruby 本机gem在1.9.3上安装良好,但在2.0.0上安装失败,ruby,rubygems,ruby-2.0,Ruby,Rubygems,Ruby 2.0,从ruby 1.8.2到1.9.3,我一直使用的带有本机扩展的私有gem运行良好,但现在无法在wird模式下安装到ruby 2.0.0上。它不安装所需的共享对象。因此文件,而是复制一个可执行文件。gem源代码没有变化,回到ruby 1.9.3(以及它的gemset)就可以了 以下是来自gem install的相关2.0.0-p0详细输出: linking shared-object mygem/mygem.so make install /usr/bin/install -c -m 0755 m
。因此
文件,而是复制一个可执行文件。gem源代码没有变化,回到ruby 1.9.3(以及它的gemset)就可以了
以下是来自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
- ruby 2.0.0-p0:rake(10.0.4,0.9.6),rake编译器(0.8.3),hoe(3.6.0)
- ruby 1.9.3-p194:rake(10.0.4,10.0.3,0.9.2.2),rake编译器(0.8.1),hoe(3.4.0,3.0.8)
mygem.gemspec
文件的情况下,我不能确定,但我怀疑您在其中列出了错误的文件。例如,这里有一个基于NMatrix使用的gempec的缩写,它也使用了rake编译器
:
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;dr:您可以尝试查看您的行中的
gem.executables
,并确保包含相关文件。因此,在没有看到您的mygem.gempec
文件的情况下,我不能确定,但我怀疑您在其中列出了错误的文件。例如,这里有一个基于NMatrix使用的gempec的缩写,它也使用了rake编译器
:
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;dr:您可以尝试查看您的行中的
gem.executables
,并确保包含相关的文件。您可以包含一份您的mygem.gempec
?您可以包含一份您的mygem.gempec
?那么,这是如何进行的?#每个#都有索引的方法?顺便说一句,我不能在家里安装NMatrix,我会在我的另一台机器上试用。那么,它是如何进行的?每一个索引方法?顺便说一句,我不能在家里安装NMatrix,我会在我的另一台机器上试试。