为什么在安装 gem 时会出现 "权限被拒绝" 的错误?
为什么在安装 gem 时会出现 "权限被拒绝" 的错误?
我正在尝试安装Jekyll。在运行gem install jekyll
后,我收到以下错误提示:\n
ERROR: While executing gem ... (Errno::EACCES) Permission denied - /usr/local/lib/ruby/gems/2.0.0/gems/jekyll-1.0.3/CONTRIBUTING.md
\n当我运行gem list
时,我可以看到Jekyll已安装,所以我非常困惑:\n
*** 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)
\n过去我在用户路径上遇到很多问题,所以我想知道这个错误是否与此有关?\n这是gem env
的输出结果:\n
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/
\n这是我的\".bash_profile\"文件内容:\n
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
\n请问有人能帮我安装Jekyll,或者至少解决这个权限错误吗?
在安装gem时出现"permission denied"错误的原因是权限问题。解决方法是使用以下命令更改文件的所有权,将其更改为当前用户:
sudo chown -R $(whoami) /Library/Ruby/Gems/*
或者在你的情况下:
sudo chown -R $(whoami) /usr/local/lib/ruby/gems/2.0.0/gems/
这个命令告诉系统将文件的所有权更改为当前用户。可能是由于安装时出现了一些问题导致的。通常情况下,这是因为存在多个帐户或用户在不必要的情况下使用sudo进行安装。
我们在尝试使用gem update —system
时也遇到了权限问题,但是我们必须仔细检查/usr/local/rvm/rubies目录树,并确保正确设置了组权限。
谢谢你的帖子。这正是我的问题所在。问题是,一旦使用sudo
安装了一个gem,它就会破坏文件夹的权限,不允许你安装其他gem。
问题的原因是Ruby安装在受限制的路径下(/usr/local/Cellar/ruby/...),需要使用提升的权限才能写入该路径。解决方法是使用sudo命令来临时提升权限,允许命令写入该目录。但是不建议以root身份运行命令,因为这样可能会导致路径和权限问题,建议使用RVM将Ruby安装到自己的主目录中,这样就可以自动安装Ruby和gem而不会出现权限问题。安装RVM的具体步骤可以参考"Single-User installations"中的说明。如果在~/.bash_profile中有RVM的配置,但在Gem环境列表中没有显示出来,可能是因为没有正确安装RVM或者没有使用以下重要的命令来配置默认的Ruby:rvm use 2.0.0 --default
。对于大多数用户来说,"Single-User installation"是最好的选择,如果在这种配置下还需要使用sudo命令,说明可能出现了问题。感谢您清晰的解释,我已经重新安装了RVM,一切正常运行。我发现您的解释,特别是最后一段非常有帮助。