2014-02-18 239 views
2

我想在Raspbian上運行不同的寶石,他們不會工作。我嘗試了兩個寶石:Jekyll和Lolcat。紅寶石寶石不會運行

我已經安裝了兩個寶石:

[email protected] ~ $ 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... 

[email protected] ~ $ 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... 

這是我收到的錯誤。

[email protected] ~ $ 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>' 

[email protected] ~ $ 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重新安裝紅寶石。我做到了,當我運行rvm list看到我的紅寶石版本,我得到如下:

[email protected] ~ $ rvm list 

rvm rubies 

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

我試過兩個版本(1.9.1 & 2.1.0),但收到同樣的錯誤運行的寶石。

預先感謝您!

+0

提示 - 你還沒有安裝任何寶石。 – mcfinnigan

+0

@mcfinnigan本來是相當熱鬧的,但我相信我確實如此。 'sudo gem install jekyll'和'sudo gem install lolcat'。我將把這兩個命令的結果放在帖子中。在'rvm使用ruby-2.1.0'後驗證命令'gem list'發出命令 –

+0

。 – mcfinnigan

回答

7

有幾件事情是錯誤的位置:

首先,寶石,已經安裝了根,這意味着他們的代碼庫(以及任何shell腳本或二進制命令生成它們的安裝)爲根的,而不是當前的用戶。這是OP原始失敗的原因 - 即,可執行腳本無法解析gem,因爲它們是在不同用戶的rvm環境下安裝的。

其次,即使可以訪問gems命令,由於文件屬於root,這可能會產生各種安全問題。如果這些寶石包含嵌入其中的行爲惡劣的代碼(或惡意代碼),潛在地,可能會發生針對運行ruby進程的系統的特權升級攻擊。

基本上,TL; DR是你應該總是使用需要運行需要寶石的紅寶石進程的用戶憑據安裝寶石,並且該用戶不應該是root或者對系統具有超級用戶權限或文件系統。