2013-07-09 103 views
28

我試圖安裝Jekyll。運行gem install jekyll後,我得到這個錯誤:爲什麼安裝gem時會出現「權限被拒絕」的錯誤?

ERROR: While executing gem ... (Errno::EACCES) 
    Permission denied - /usr/local/lib/ruby/gems/2.0.0/gems/jekyll-1.0.3/CONTRIBUTING.md 

我可以看到,當我運行gem list所以我徹底糊塗安裝傑基爾:

*** LOCAL GEMS *** 

bigdecimal (1.2.0) 
classifier (1.3.3) 
colorator (0.1) 
commander (4.1.3) 
directory_watcher (1.4.1) 
fast-stemmer (1.0.2) 
highline (1.6.19) 
io-console (0.4.2) 
jekyll (1.0.3) 
json (1.7.7) 
kramdown (1.0.2) 
liquid (2.5.0) 
maruku (0.6.1) 
minitest (4.3.2) 
posix-spawn (0.3.6) 
psych (2.0.0) 
pygments.rb (0.5.1) 
rake (0.9.6) 
rdoc (4.0.0) 
rubygems-update (2.0.3) 
safe_yaml (0.7.1) 
syntax (1.0.0) 
test-unit (2.0.0.0) 
yajl-ruby (1.1.0) 

我已經有很多的問題,我的過去的用戶路徑,所以我想知道這個錯誤是否可以解決這個問題?

這裏是gem env輸出:

RubyGems Environment: 
    - RUBYGEMS VERSION: 2.0.3 
    - RUBY VERSION: 2.0.0 (2013-02-24 patchlevel 0) [x86_64-darwin12.3.0] 
    - INSTALLATION DIRECTORY: /usr/local/Cellar/ruby/2.0.0-p0/lib/ruby/gems/2.0.0 
    - RUBY EXECUTABLE: /usr/local/Cellar/ruby/2.0.0-p0/bin/ruby 
    - EXECUTABLE DIRECTORY: /usr/local/Cellar/ruby/2.0.0-p0/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86_64-darwin-12 
    - GEM PATHS: 
    - /usr/local/Cellar/ruby/2.0.0-p0/lib/ruby/gems/2.0.0 
    - /Users/me/.gem/ruby/2.0.0 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - REMOTE SOURCES: 
    - https://rubygems.org/ 

這裏是我的「的.bash_profile」:

export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH" 

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* 
PATH=$PATH:above/path/to/gems 

source ~/.rvm/scripts/rvm 

可能有人可以幫我安裝化身,或者至少讓過去這個權限錯誤?

回答

43

您的Ruby安裝在/usr/local/Cellar/ruby/...

這是一個受限路徑,只能在使用提升權限時寫入,或者以root身份運行或使用sudo。我不建議你以root身份運行,因爲你不瞭解路徑和權限的工作原理。您可以可以使用sudo gem install jekyll,這將暫時提升您的權限,爲您的命令提供寫入該目錄所需的權限。但是,我建議你認真考慮不要這樣做,而是使用RVM將Ruby安裝到您自己的主目錄中,在那裏您將自動安裝Rubies和Gems,而不需要許可問題。請參閱「Single-User installations」中有關安裝到本地RVM沙箱的說明。

由於您的~/.bash_profile中有RVM,但它並未顯示在您的Gem環境清單中,所以我懷疑您是否沒有正確安裝RVM,或者您沒有使用最重要的命令:

rvm use 2.0.0 --default 

配置默認的Ruby。

對於大多數用戶來說,「單用戶安裝」是最佳選擇。如果你必須使用sudo這個配置,你做錯了什麼。

+0

謝謝你這麼清楚。我已經回去並安裝了RVM。一切都很完美。 – okTalk

+0

我發現你的解釋,尤其是你的結論段落最有幫助。 –

28

我想和大家分享的是我跟着,在希望它可以幫助別人(也作爲提醒我的情況下,類似的事情再次發生)

的問題修復了這個問題,我的步驟我一直在使用(與OP的相同),可能需要使用homebrew來安裝Ruby。

爲了解決這個問題,首先我更新自制:

brew update && brew upgrade 
brew doctor 

(如果沖泡醫生出現任何問題,首先解決這些問題。)然後我卸載紅寶石

brew uninstall ruby 

如果rbenv是安裝在這一點上,然後

brew install rbenv 
brew install ruby-build 
echo 'export RBENV_ROOT=/usr/local/var/rbenv' >> ~/.bash_profile 
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile 

然後我用rbenv安裝Ruby。首先,找到想要的版本:

rbenv install -l 

安裝該版本(例如2.2.2)

rbenv install 2.2.2 

然後設置全球版本所需紅寶石版本:

rbenv global 2.2.2 

在這點您應該看到爲以下命令設置的所需版本:

rbenv versions 

ruby --version 

現在,你應該能夠安裝捆綁:

gem install bundler 
在所需的項目文件夾

而且一次,就可以安裝所有需要的寶石:

bundle 
bundle install 
+0

所以現在我們有一個RVM和一個rbenv答案。現在我們只需要一個[chruby](https://github.com/postmodern/chruby/blob/master/README.md),許多人正在[切換](https://jesse.codes/blog/rbenv to-chruby /)來。有關更多信息,請參閱[Ruby Rogues插曲](http://devchat.tv/ruby-rogues/169-rr-version-managers-with-michal-papis-mislav-maronic-and-postmodern-mod-iii)比較ruby版本管理器。 –

+0

好工作,謝謝。 rbenv回購鏈接,如果有人需要它https://github.com/sstephenson/rbenv – jasonleonhard

+0

設置'echo'出口RBENV_ROOT =/usr/local/var/rbenv'>>〜/ .bash_profile'而不是僅僅是什麼原因使用默認的'〜/ .rbenv'? – tir38

3

在將gems目錄設置爲使用export GEM_HOME=/home/<user>/gems運行gem install的用戶目錄後,問題就解決了。

0

安裝rbenv或RVM爲你的Ruby版本管理器通過自制軟件(即brew update & brew install rbenv)(我喜歡rbenv),但是例如在rbenv的情況下,確保按指示herehere到rbenv添加到您的$ PATH。我們推薦this

3

我不得不使用rvm同樣的問題上Ubuntu,固定由作爲短期溶液我的終端上設置source

source $HOME/.rvm/scripts/rvm

source /home/$USER/.rvm/scripts/rvm

並在我的情況下配置一個默認的Ruby版本,2.3.3

rvm use 2.3.3 --default


而且一個長期解決方案是增加你的source.bashrc文件永久讓Ubuntu的看着.rvm所有Ruby文件。

地址:

source .rvm/scripts/rvm

$HOME/.bashrc文件。

相關問題