Ruby Gems 无法运行

标签 ruby rubygems rvm

我正在尝试在 Raspbian 上运行不同的 gem,但它们不起作用。我尝试了两个 gems:Jekyll 和 Lolcat。

我已经安装了两个 gem:

pi@moon ~ $ sudo gem install lolcat
Successfully installed lolcat-42.0.99
1 gem installed
Installing ri documentation for lolcat-42.0.99...
Installing RDoc documentation for lolcat-42.0.99...

pi@moon ~ $ sudo gem install jekyll
Successfully installed jekyll-1.4.3
1 gem installed
Installing ri documentation for jekyll-1.4.3...
Installing RDoc documentation for jekyll-1.4.3...

这些是我收到的错误。

pi@moon ~ $ lolcat --help
/usr/lib/ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find lolcat (>= 0)   
amongst [bundler-1.5.3, bundler-unload-1.0.2, executable-hooks-1.3.1, gem-wrappers-1.2.4, rubygems-bundler-1.4.2, rvm-1.11.3.9] (Gem::LoadError)
from /usr/lib/ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /usr/lib/ruby/1.9.1/rubygems.rb:1231:in `gem'
from /usr/local/bin/lolcat:22:in `<main>'

pi@moon ~ $ jekyll
/usr/lib/ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find jekyll (>= 0) 
amongst [bundler-1.5.3, bundler-unload-1.0.2, executable-hooks-1.3.1, gem-wrappers-1.2.4, rubygems-bundler-1.4.2, rvm-1.11.3.9] (Gem::LoadError)
from /usr/lib/ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /usr/lib/ruby/1.9.1/rubygems.rb:1231:in `gem'
from /usr/local/bin/jekyll:22:in `<main>'

有人建议我使用 RVM 重新安装 ruby​​。我这样做了,当我运行 rvm list 查看我的 ruby​​ 版本时,我得到以下信息:

pi@moon ~ $ rvm list

rvm rubies

=> ruby-1.9.1-p431 [ armv6l ]
 * ruby-2.1.0 [ armv6l ]

我尝试在两个版本(1.9.1 和 2.1.0)上运行这些 gem,但收到相同的错误。

提前致谢!

最佳答案

这里有几处错误:

首先,gems 是以 root 身份安装的,这意味着它们的代码库(以及它们安装生成的任何 shell 脚本或二进制命令)是 root 的,而不是当前用户的。这是 OP 最初失败的原因 - 即,可执行脚本无法解析 gem,因为它们安装在不同用户的 rvm 环境下。

其次,即使可以访问 gems 命令,这也可能会产生各种安全问题,因为这些文件属于 root。潜在地,如果这些 gem 中嵌入了行为不良的代码(或恶意代码),则可能会对运行 ruby​​ 进程的系统进行特权升级攻击。

基本上,TL;DR 是您应该始终使用需要运行需要 gems 的 ruby​​ 进程的用户的凭据来安装 gems,并且该用户永远不应是 root 或拥有系统或文件系统的 super 用户权限。

关于Ruby Gems 无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21857571/

相关文章:

ruby-on-rails - 无法将 current_user.name 作为注释的属性传递

ruby-on-rails - 无法构建 Gem 扩展错误安装 rails

ruby - gem2rpm 包含所有依赖项,而不是仅包含运行时依赖项

ruby-on-rails - 如何删除 XCode 4.2 并安装 4.1 以在 OSX Lion 上开发 Ruby/Rails?

ruby - 无法运行 "gem list"!

ruby - Datamapper first_or_create 在 sql 中等效?

Ruby - 如何在 .rb 文件中查找给定 Gem 的所有依赖项?

ruby-on-rails - 使用 :confirm in my link_to helper method in ruby on rails 4 has no effect what so ever. 可能有什么问题?

ruby-on-rails - Ruby on Rails 配置 - Plaid Gem

带有 RVM 和 REE 1.8.7 的 OS X Snow Leopard 中的 MySQL gem 永远无法正确构建