1. ホーム
  2. ruby

[解決済み] gemのインストール中に "permission denied "エラーが発生するのはなぜですか?

2022-02-16 23:25:38

質問内容

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

を実行すると、Jekyllがインストールされていることが確認できます。 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

誰か私がJekyllをインストールするのを助けてください、または少なくともこのパーミッションエラーを乗り越えることができますか?

解決方法は?

Rubyがインストールされている場所 /usr/local/Cellar/ruby/... .

これは制限されたパスであり、昇格した特権を使用したときのみ書き込むことができます。 sudo . あなたはパスとパーミッションの仕組みを理解していないので、rootで物事を実行することは勧めません。あなたは できる 使用 sudo gem install jekyll を実行すると、一時的にパーミッションが昇格し、そのディレクトリに書き込むのに必要な権限がコマンドに付与されます。

その代わり、RVM を使って自分のホームディレクトリに Ruby をインストールすれば、パーミッションの問題なしに自動的に Ruby や gems をインストールできるようになります。ローカルのRVMサンドボックスにインストールする方法については、"を参照してください。 シングルユーザーインストール をご覧ください。

にRVMがあるので ~/.bash_profile しかしGemの環境リストには表示されない。 RVMのインストール手順に正しく従っていないか、重要なコマンドを使用していないか、どちらかだと思われる。

rvm use 2.0.0 --default

で、デフォルトのRubyを設定します。

ほとんどのユーザーにとって、"Single-User installation"は最適な方法です。を使用する必要がある場合は sudo そのような構成では、何か間違ったことを行っていることになります。