2010-03-05 21 views
39

“gem install”如何工作?这是不直观...如何安装下载的Ruby gem文件?

我的宝石是真的在这里:

[[email protected] Téléchargement]# ll *.gem 
-rw-rw-r-- 1 jean jean 16353818 mar 5 11:39 ruby-processing-1.0.9.gem 

但是,一个地道的“创业板安装”不看它...

[[email protected] Téléchargement]# gem install ruby-processing-1.0.9.gem 
ERROR: could not find gem ruby-processing-1.0.9.gem locally or in a repository 

这有什么错呢?

回答

47

也许我还没有完全明白这个问题。但是如果你只是想在你的本地机器上安装一个gem,那么你需要从控制台执行的操作就是进入包含你的gem和gem install --local your.gem的目录。

12

问题是,gem install正在寻找gem来安装它的默认目录。你可以找出通过运行:

$ gem environment 

这会给你这样的:

> RubyGems Environment: 
> - RUBYGEMS VERSION: 1.3.6 
> - RUBY VERSION: 1.8.6 (2007-09-24 patchlevel 111) [i486-linux] 
> - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8 
> - RUBY EXECUTABLE: /usr/bin/ruby1.8 
> - EXECUTABLE DIRECTORY: /usr/bin 
> - RUBYGEMS PLATFORMS: 
>  - ruby 
>  - x86-linux 
> - GEM PATHS: 
>  - /usr/lib/ruby/gems/1.8 
>  - /home/adminuser/.gem/ruby/1.8 

GEM PATHS位置是在哪里创业板安装期待找到宝石安装。所以,解决问题的方法是将宝石从当前位置复制到预期的目录,即

$ cp my.gem /home/adminuser/.gem/ruby/1.8/ 

如果你再运行创业板安装它会拿起你的宝石和安装。请确保您运行的复制命令以超级用户(sudo的,如果你正在运行Ubuntu像我)

PS如果,当你运行$宝石环境,您获得宝石的“未定义的方法‘manage_gems’ :模块(NoMethodError)”的错误,然后编辑在/ usr/bin中/宝石并确保前三行的文件是这样的:

  1. 需要 'RubyGems的'
  2. 需要“的RubyGems/gem_runner '
  3. Gem.manage_gems

+0

我试图从源代码安装宝石,我会怎么做呢?最好使用符号链接,以便我可以更新源代码。 – Pepijn

+0

谢谢你。我需要安装Oracle适配器,并且必须从.gem文件中完成,因为源不再可用。 – Eric

23

如果您需要在本示例foo-bar中构建/安装您自己的gem文件,只需进一步说明。

gem build foo-bar.gemspec 
gem install --local foo-bar-0.1.0.gem 

我是研究如何做到这一点,这个职位是第一个结果:)

+0

谢谢。第二行应该可能固定为:gem install --local foo-bar-1.0.0.gem – valk

+1

@valk它取决于'* .gemspec'中指定的版本。值得一提的是,你不需要'--local'句柄,但文档说它是这样做的,所以我已经尊重它。 –

+0

@HarisKrajina使用'--local'会很有帮助,因为它会阻止它检查每个源的repo并节省一些时间。如果您编辑了在线发现的宝石(这是否使其与其他程序兼容)特别有用。 – wolfcall