为什么在安装 gem 时会出现 "权限被拒绝" 的错误?

21 浏览
0 Comments

为什么在安装 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,或者至少解决这个权限错误吗?

0
0 Comments

在安装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。

0
0 Comments

在安装gem时,出现"permission denied"错误的原因可能是使用homebrew安装Ruby引起的。解决方法是首先更新homebrew,然后卸载Ruby。如果此时未安装rbenv,则需要安装rbenv,并设置环境变量。接下来使用rbenv安装所需的Ruby版本,并将全局版本设置为所需的版本。然后可以安装bundler,并在项目文件夹中安装所有所需的gems。此外,可以使用chruby作为另一种Ruby版本管理工具。

0
0 Comments

问题的原因是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,一切正常运行。我发现您的解释,特别是最后一段非常有帮助。

0