2010-11-29 60 views
11

我已經搜索了這個問題,並找不到相關的類似問題。如果這是重複的,請耐心等待。權限拒絕與RVM的錯誤

我在RVM網站跟着導遊安裝RVM和我已經安裝了紅寶石:

[email protected]:~$ rvm list 

rvm rubies 

    ruby-1.8.7-p302 [ i386 ] 
=> ruby-1.9.2-p0 [ i386 ] 

正如你可以看到我做的紅寶石1.9.2我的默認。

這是我的寶石目錄:

[email protected]:~$ rvm gemdir 
/home/syed/.rvm/gems/ruby-1.9.2-p0 

現在,我試圖安裝導軌,我拋出了以下錯誤:

[email protected]:~$ gem install rails 
ERROR: While executing gem ... (Errno::EACCES) 
    Permission denied - /home/syed/.gem/specs 

我甚至做這個而不做任何差異錯誤:

[email protected]:~$ chown -R syed /home/syed/.rvm/ 

目前,我的環境如下所示:

[email protected]:~$ gem environment 
RubyGems Environment: 
    - RUBYGEMS VERSION: 1.3.7 
    - RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [i686-linux] 
    - INSTALLATION DIRECTORY: /home/syed/.rvm/gems/[email protected] 
    - RUBY EXECUTABLE: /home/syed/.rvm/rubies/ruby-1.9.2-p0/bin/ruby 
    - EXECUTABLE DIRECTORY: /home/syed/.rvm/gems/[email protected]/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86-linux 
    - GEM PATHS: 
    - /home/syed/.rvm/gems/[email protected] 
    - /home/syed/.rvm/gems/[email protected] 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - REMOTE SOURCES: 
    - http://rubygems.org/ 

我不明白爲什麼它試圖將gems安裝到我的系統gem目錄路徑中?

+0

也發現了一個奇怪的事情現在發生。當我打開一個新的shell時,ruby版本應該是全系統安裝的版本(即,ruby-1.8.7)不是嗎?但是,它給了我1.9.2,我必須做rvm系統來回到那個。 – 2010-11-29 11:17:53

+0

很奇怪。試試`chmod -R u + w/home/syed/.rvm` – aceofspades 2010-11-29 18:19:18

回答

18

我有這個同樣的問題,我做了以下解決它:

sudo mkdir ~/.gem/specs 
sudo chmod 777 ~/.gem/specs 

看來,RVM試圖創建這個「規範」的文件夾,但沒有權限這麼做。

3

也許試着檢查必要文件/目錄的「chown」權限以瞭解更多關於您的錯誤信息。

通常我爲不同的應用程序/項目創建gemset,所以在幾個星期/幾個月之後,我不會在一個地方混合上百種不同的寶石。試試這個:

rvm use 1.9.2 
rvm gemset create YOURGEMSETNAME 
rvm gemset use YOURGEMSETNAME 

或者乾脆

rvm [email protected] --create 

嘗試後,要安裝你的寶石。如果您希望出現的寶石,每寶石紅寶石1.9.2,比切換到全球寶石和安裝有你的寶石:

rvm [email protected] 
gem install rails3 # or whatever you wish 
+0

我早些時候試過這個:$ rvm use --create [email protected] 但是,它拋出了相同的錯誤。它將/home/syed/.gem/specs作爲gem目錄而不是/home/syed/.rvm/gems/[email protected]。我不知道爲什麼。 – 2010-11-29 11:24:35

+0

這很奇怪,它應該沒有任何權限問題的工作。再次徹底檢查您的權限.. – fifigyuri 2010-11-29 12:18:52

1

什麼是你的路徑是什麼樣子?這聽起來像你正在得到一個系統版本的寶石,而不是基於rvm的命令。

2

我終於解決了這個問題。事實證明,我的防火牆阻止了199.91.171.93。當我打開訪問權限時,我不再收到Errno::EACCES消息。我通過使用--verbose診斷了這一點,我可以看到源代碼正在嘗試更新$ HOME/.gem/specs/ruby​​gems.org%80/quick/Marshal.4.8區域,但不能僅僅因爲流量被阻止。

1

對於那些來自谷歌的人:在Windows上,我遇到了這個問題,因爲我的Program Files目錄中安裝了舊版本的Ruby,而這些新版本的Windows在安全上有限制。運行ruby --version以確保它符合預期。

2

我剛剛有這個問題,並希望爲後代記錄我的答案。我特定於Ruby的RVM目錄中的所有目錄均由root擁有。所以我不得不把他們全部都剪開。

~/.rvm/gems/ruby-1.9.3-p286 

drwxr-xr-x 22 root   staff 748 Nov 12 13:34 bin 
drwxr-xr-x 2 root   staff 68 Nov 20 14:42 cache 
drwxr-xr-x 2 root   staff 68 Nov 1 09:59 doc 
drwxr-xr-x 47 root   staff 1598 Nov 12 13:34 gems 

我不知道這是正常的,但他們都改變我的非root用戶後,問題消失。

4

我真的不喜歡接受的答案,它的黑客不是適合生產的解決方案。當你使用chmod 777時,你可以讓機器上的任何人訪問這些文件夾。

爲這個項目創建一個單獨的gemset然後確保你用chown擁有它更好。

rvm gemset create project 
rvm use [email protected] # May not be necessary 

而在你的寶石文件夾,對上面的情況「家用/賽義德/ .rvm /寶石/」,請確保您創建的新寶石擁有者是您

cd home/syed/.rvm/gems/ && ls -la 

如果你不」 t擁有它,然後把它給你的用戶

sudo chown -R user:rvm gemset