web-dev-qa-db-ja.com

gemのインストール中に「permission denied」エラーが表示されるのはなぜですか?

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をインストールするのを手伝ってもらえますか、少なくともこの許可エラーを過ぎてしまうでしょうか?

46
okTalk

Rubyは/usr/local/Cellar/Ruby/...にインストールされます。

これは制限されたパスであり、rootとして実行するか、Sudoを使用して、昇格した特権を使用する場合にのみ書き込むことができます。パスとパーミッションがどのように機能するか理解していないので、ルートとして実行することはお勧めしません。 canSudo gem install jekyllを使用できます。これは一時的に権限を高め、コマンドにそのディレクトリへの書き込みに必要な権限を与えます。

ただし、そうしないことに真剣に取り組むことをお勧めします。代わりに、RVMを使用してRubyを自分のホームディレクトリにインストールします。 。 「 Single-User installations 」のローカルRVMサンドボックスにインストールするための指示を参照してください。

~/.bash_profileにRVMがありますが、Gem環境のリストに表示されないため、RVMを正しくインストールするための指示に従わなかったか、重要なものを使用していません。コマンド:

rvm use 2.0.0 --default

デフォルトのRubyを構成します。

ほとんどのユーザーにとって、「シングルユーザーインストール」が道です。その構成でSudoを使用する必要がある場合は、何か問題があります。

65
the Tin Man

他の誰かを助けることができることを期待して、この問題を修正した手順を共有したいと思いました(そして、このようなことが再び起こった場合のリマインダーとして)

私が抱えていた問題(OPと同じ)は、Rubyをインストールするために homebrew を使用することに関係している可能性があります。

これを修正するために、まずhomebrewを更新しました。

brew update && brew upgrade
brew doctor

(醸造医が問題を見つけた場合は、まずそれらを修正します。)その後、Rubyをアンインストールしました

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

次に、グローバルバージョンを目的のRubyバージョンに設定します。

rbenv global 2.2.2

この時点で、次のコマンドの目的のバージョンセットが表示されます。

rbenv versions

そして

Ruby --version

これで、Bundlerをインストールできるはずです。

gem install bundler

そして、目的のプロジェクトフォルダに配置したら、必要なすべてのgemをインストールできます。

bundle
bundle install
45
Mike Lane

パーミッションの問題のようです。これは私のために働いたものです

Sudo chown -R $(whoami) /Library/Ruby/Gems/*

またはあなたの場合

Sudo chown -R $(whoami) /usr/local/lib/Ruby/gems/2.0.0/gems/
13
Bryan Norden

Gemsディレクトリを、gem installを使用してexport GEM_HOME=/home/<user>/gemsを実行するユーザーディレクトリに設定すると、問題は解決しました。

6
030

rvmUbuntuを使用すると同じ問題が発生しましたが、ターミナルで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ファイル。

3
David Ben Dahan

Rbenvまたはrvmをhomebrew(つまりbrew update & brew install rbenv)経由でRubyバージョンマネージャー(rbenvを好む)としてインストールしますが、たとえばrbenvの場合は、指示に従ってrbenvを$ PATHに追加してください- here および here

Rbenvの動作の詳細については、 this をお勧めします。

0
urubuz