我正在尝试安装Jekyll。运行gem install jekyll
后,我收到此错误:
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
时安装了Jekyll,所以我完全糊涂了:
*** 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
有人可以帮我安装Jekyll,或者至少得到这个权限错误吗?
答案 0 :(得分:64)
您的Ruby安装在/usr/local/Cellar/ruby/...
。
这是一个受限制的路径,只能在使用提升权限时写入,可以通过以root用户身份运行,也可以使用sudo
。我不建议您以root身份运行,因为您不了解路径和权限的工作方式。您可以使用sudo gem install jekyll
,这会暂时提升您的权限,为您的命令提供写入该目录所需的权限。
但是,我建议你认真考虑不这样做,而是使用你的RVM将Ruby安装到你自己的主目录中,在那里你可以自动安装Rubies和gem而不会出现权限问题。请参阅“Single-User installations”中的安装到本地RVM沙箱的说明。
因为您的~/.bash_profile
中有RVM,但它没有出现在您的Gem环境列表中,我怀疑您没有按照正确安装RVM的说明,或者您没有使用过非常重要的命令:
rvm use 2.0.0 --default
配置默认的Ruby。
对于大多数用户来说,“单用户安装”是最佳选择。如果你必须使用sudo
配置,那你就做错了。
答案 1 :(得分:44)
我想分享我为我解决这个问题所遵循的步骤,希望它可以帮助其他人(并且如果有类似的事情再次发生,也会提醒我)
我遇到的问题(与OP相同)可能与使用homebrew安装Ruby有关。
要解决此问题,首先我更新了homebrew:
brew update && brew upgrade
brew doctor
(如果brew医生提出任何问题,请先修复它们。)然后我卸载了ruby
brew uninstall ruby
如果此时安装了rbenv NOT ,那么
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
然后将全局版本设置为所需的ruby版本:
rbenv global 2.2.2
此时,您应该看到为以下命令设置的所需版本:
rbenv versions
和
ruby --version
现在您应该能够安装bundler:
gem install bundler
在所需的项目文件夹中,您可以安装所有必需的宝石:
bundle
bundle install
答案 2 :(得分:12)
似乎是权限问题。这对我有用
sudo chown -R $(whoami) /Library/Ruby/Gems/*
或在你的情况下
sudo chown -R $(whoami) /usr/local/lib/ruby/gems/2.0.0/gems/
答案 3 :(得分:6)
将gems目录设置为使用gem install
运行export GEM_HOME=/home/<user>/gems
的用户目录后,问题就解决了。
答案 4 :(得分: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查看{{1}对于所有Ruby文件。
添加:
.rvm
进入
source .rvm/scripts/rvm
档案。
答案 5 :(得分:0)
通过自制软件(即brew update & brew install rbenv
)安装rbenv或rvm作为您的Ruby版本管理器(我更喜欢rbenv)但是例如在rbenv的情况下确保按照指示{{3}将rbenv添加到$ PATH }和here。
有关rbenv如何工作的更深入解释,我建议here。
答案 6 :(得分:0)
我认为使用rbenv时发生了问题。尝试使用以下命令对其进行修复。
rbenv shell {rb_version}
rbenv global {rb_version}
or
rbenv local {rb_version}