606

gem install mygemを使用して gem をインストールするか、または を使用して RubyGems を更新しようとしgem update --systemていますが、次のエラーで失敗します。

ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

これを解決する方法を知っている人はいますか?

4

30 に答える 30

331

/Library/Ruby/Gems/1.8ディレクトリへの書き込み権限がありません。

つまり、そこに書き込む権限がありません。

これは、Appleが独自に使用するためにインストールしたRubyのバージョンです。自分が何をしているのかがわかっていれば、少し変更を加えてもかまいませんが、権限の問題についてはよくわからないので、その道を進むのは得策ではないと思います。

代わりに、rbenvまたはRVMのいずれかを使用して、ホームディレクトリのサンドボックスにインストールされた別のRubyを管理することを検討することを強くお勧めします。これにより、システムRubyを台無しにすることを心配せずに変更/折りたたみ/スピンドル/変更できます。

過去にRVMをよく使用していましたが、この2つの間でrbenvを使用しています。rbenvは、Rubyインストールを管理するためのより「ハンズオフ」アプローチを採用しています。RVMには多くの機能があり、非常に強力ですが、その結果、より煩わしいものになります。いずれの場合も、インストールを開始する前に、インストールドキュメントを数回読んでください。

于 2013-01-30T15:36:52.900 に答える
96

Ruby バージョン マネージャーを使用する必要があります。

適切に使用すると、gem updateコマンドを実行する際のアクセス許可の問題を回避および解決できます。

rbenvをお勧めします。

ただし、Ruby バージョン マネージャーを使用している場合でも、同じエラー メッセージが表示される場合があります。

rbenv を使用している場合は、~/.rbenv/shimsディレクトリがシステム Ruby のパスの前にあることを確認してください。

$ echo $PATH ロードパスの順序が表示されます。

shims ディレクトリがシステムの Ruby bin ディレクトリの後にある場合は、~/.bashrcファイルを編集して、これを最後の export PATH コマンドとして配置します。 export PATH=$HOME/.rbenv/shims:$PATH

$ ruby -v 使用している Ruby のバージョンを表示します

これは、私が現在Rubyのシステムバージョンを使用していることを示しています(通常は良くありません)

$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

$ rbenv global 1.9.3-p448 プリインストールされた新しいバージョンに切り替えます (以下の参考文献を参照)。

これは、Ruby の新しいバージョンを使用していることを示しています (Gem::FilePermissionError は発生しない可能性があります)。

$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

通常、gem コマンドの前に sudo を付ける必要はありません。そうする必要があると感じた場合は、おそらく何かが正しく構成されていません。

rbenv の詳細については、以下を参照してください。

于 2013-09-01T02:40:51.723 に答える
73

なぜあなたはしないのですか:

sudo gem update --system
于 2013-06-21T09:30:42.467 に答える
25

パスを修正する必要があります。

この修正が機能するかどうかを判断するには、次を実行します。

which gem

これにより、アクセス許可を持っていないディレクトリが出力されます。

/usr/bin/gem

これを修正するには、次の手順を実行します。

  1. プロファイルにコピーする必要があるパスを決定します。

    rbenv init -
    

    出力の最初の行は、プロファイルにコピーする必要がある行です。

    export PATH="/Users/justin/.rbenv/shims:${PATH}" #path that needs to be copied
    source "/usr/local/Cellar/rbenv/0.4.0/libexec/../completions/rbenv.zsh"
    rbenv rehash 2>/dev/null
    rbenv() {
        typeset command
        command="$1"
        if [ "$#" -gt 0 ]; then
            shift
        fi
    
        case "$command" in
            rehash|shell)
                eval `rbenv "sh-$command" "$@"`;;
            *)
                command rbenv "$command" "$@";;
        esac
    }
    
  2. パスをプロファイルにコピーして保存します。

  3. あなたのプロフィールをリロードしてください(source ~/.zshenv私にとって)。

  4. 実行しますrbenv rehash

実行which gemすると、次の権限を持つローカル パスを取得する必要があります。

/Users/justin/.rbenv/shims/gem
于 2014-10-29T21:38:40.647 に答える
16
sudo gem update --system
sudo gem install (gemfile)
于 2013-08-05T13:58:06.193 に答える
15

以下の元の回答を使用する前に、 nathanwhy の回答を試してください。彼の推奨は、ルビのバージョンをいじったり決定--user-installしたりすることなく、同じ目的を達成するはずです。.bash_profile


特定の ruby​​ バージョンに関心がない場合は、手間のかかるruby​​ 環境マネージャーのオプションをスキップして、次の行を に追加するだけでかまいません~/.bash_profile

export GEM_HOME="$HOME/.gem/ruby/2.0.0"
export GEM_PATH="$HOME/.gem/ruby/2.0.0"

パスは の元の出力から取得されますgem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.14
  - RUBY VERSION: 2.0.0
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
  - RUBY EXECUTABLE: /System/Library/.../2.0/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-14
  - GEM PATHS:
     - /Library/Ruby/Gems/2.0.0
     - /Users/mylogin/.gem/ruby/2.0.0 # <-- This guy, right here.
     - /System/Library/.../usr/lib/ruby/gems/2.0.0
  ...

ing は不要sudoで、Apple の厚意により、既にインストールされている ruby​​ を使用できます。

于 2015-08-15T17:07:01.073 に答える
15

2 つのルートがあります: rbenv または RVM のいずれかを使用します。以下に両方のレシピがあります。そうする前に、gem のローカル ドキュメントのインストールをオフにしたいでしょう。

echo "gem: --no-ri --no-rdoc" >> ~/.gemrc

それで:

install rbenv

install ruby-build

走る:

rbenv install 2.1.2 (or whatever version you prefer)
rbenv global 2.1.2
gem update --system

これにより、gem システムの最新バージョンがローカル ディレクトリにインストールされます。これは、システム構成に干渉しないことを意味します。この質問をしているのであれば、システムのセキュリティを台無しにするべきではありません。また、最初の問題を回避する簡単な方法を見つけるよりも、どのような問題に遭遇する可能性があるかを理解することに時間を費やすことになります. オペレーティング システムとプログラミングについて詳しく知った後で、InfoSec について学習します。

別の方法として、代わりに「RVM」を使用します: rvm をインストールするには、次を実行します。

rvm install 2.1.2
rvm use 2.1.2
gem update --system

これは同じ結果になり、システムのバージョンに干渉しないローカルの Ruby および Gem システムになります。Homebrew やシステム ライブラリのオーバーライドなどは必要ありません。

于 2014-08-03T23:23:48.450 に答える
13

宝石を減らすためのこのハウツーsudoを見つけました:

  1. brew install rbenv ruby-build
  2. sudo gem update --system
  3. にエクスポートを追加.bashrc:

    export RBENV_ROOT="$(brew --prefix rbenv)"
    export GEM_HOME="$(brew --prefix)/opt/gems"
    export GEM_PATH="$(brew --prefix)/opt/gems"
    
  4. そして最後にこれをあなたのに追加してください~/.gemrc

    gem: -n/usr/local/bin
    
  5. gem update --system

于 2014-10-14T21:41:01.697 に答える
12

年上で賢い

私がここで言うことをしないでくださいsudorbenvあなたはおそらく、あなたがしている仕事を分離するようなものを使いたいと思うでしょう.


あちらへ

について学ぶchown

コマンドラインが好きかどうかはわかりませんが、これにより、パッケージをシステムにインストールするツールを使用して、プロジェクトでの作業が簡単になります。

chown私の知る限り、所有権の変更を表します。

私がこの答えを探しに来た理由は、gem install今日私にこのエラーを投げたからです:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /var/lib/gems/1.9.1 directory.

を利用する絶好の機会chownです。アクセスが必要なディレクトリを Ruby が提供してくれていることがわかります。これは、Ruby が頻繁に使用するディレクトリのようです。

この場合、問題を解決するために知っておく必要があることは 3 つだけですが、これchownははるかに強力であり、今説明するよりもはるかに柔軟です。詳細については、下部のソースを参照してください。

二つのこと

  1. ユーザー名
  2. ディレクトリ

シェルを使用している場合、ユーザー名を見つけるのは簡単です。プロンプトを見てください。私は次のようになります:

breadly@breadly-desktop:~\Desktop

現在のユーザーは、@. エラー メッセージからディレクトリはわかっていますが、2 つの選択肢があります。を使用して権限を現在のバージョンに制限するか、 を使用し../gems/1.9.1てすべてのバージョンの gem に対する書き込み権限を自分自身に与えることができます../gems

実際に所有権を変更するコマンドは次のようになります。

chown -R $(whoami) /absolute/path/to/directory

これ-Rはフラグとして知られており、-Rフラグは通常、コマンドに再帰的に何かを実行するように指示します。つまり、ディレクトリに含まれるすべてのもの、およびその中に含まれるディレクトリに含まれるすべてのものに対してコマンドを実行します。他には何もありません。

于 2013-12-24T20:56:29.753 に答える
12

rbenv rehashローカルの Gem ライブラリを指すようにする必要がありました。

システム ライブラリを指している gem マネージャーを持っているように見えるので、パーミッションをいじる代わりに、マネージャーがローカルにポイントするように「再ハッシュ」と同等のことを行ってください。

于 2013-11-10T18:10:12.590 に答える
4

Ruby のバージョンが正しいかどうかを確認します。そうでない場合は、変更してください。

これは私のために働く:

$ rbenv global 1.9.3-p547
$ gem update --system
于 2015-01-26T07:25:40.317 に答える
2

bobbdelsol が指摘したように、再ハッシュは私にとってはうまくいきました:

==> which ruby
/usr/bin/ruby

==> rbenv install 1.9.3-p551
Downloading ruby-1.9.3-p551.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2
Installing ruby-1.9.3-p551...
Installed ruby-1.9.3-p551 to /Users/username/.rbenv/versions/1.9.3-p551


==> which ruby
/Users/username/.rbenv/shims/ruby

==> which gem
/Users/username/.rbenv/shims/gem

==> gem install compass
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> rbenv rehash


==> ruby -v
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-darwin15.4.0]


==> gem install compass
Fetching: sass-3.4.22.gem (100%)
Fetching: multi_json-1.11.3.gem (100%)
Fetching: compass-core-1.0.3.gem (100%)
Fetching: compass-import-once-1.0.5.gem (100%)
Fetching: chunky_png-1.3.5.gem (100%)
Fetching: rb-fsevent-0.9.7.gem (100%)
Fetching: ffi-1.9.10.gem (100%)
Building native extensions.  This could take a while...
Fetching: rb-inotify-0.9.7.gem (100%)
Fetching: compass-1.0.3.gem (100%)
    Compass is charityware. If you love it, please donate on our behalf at http://umdf.org/compass Thanks!
Successfully installed sass-3.4.22
Successfully installed multi_json-1.11.3
Successfully installed compass-core-1.0.3
Successfully installed compass-import-once-1.0.5
Successfully installed chunky_png-1.3.5
Successfully installed rb-fsevent-0.9.7
Successfully installed ffi-1.9.10
Successfully installed rb-inotify-0.9.7
Successfully installed compass-1.0.3
9 gems installed
Installing ri documentation for sass-3.4.22...
Installing ri documentation for multi_json-1.11.3...
Installing ri documentation for compass-core-1.0.3...
Installing ri documentation for compass-import-once-1.0.5...
Installing ri documentation for chunky_png-1.3.5...
Installing ri documentation for rb-fsevent-0.9.7...
Installing ri documentation for ffi-1.9.10...
Installing ri documentation for rb-inotify-0.9.7...
Installing ri documentation for compass-1.0.3...
Installing RDoc documentation for sass-3.4.22...
Installing RDoc documentation for multi_json-1.11.3...
Installing RDoc documentation for compass-core-1.0.3...
Installing RDoc documentation for compass-import-once-1.0.5...
Installing RDoc documentation for chunky_png-1.3.5...
Installing RDoc documentation for rb-fsevent-0.9.7...
Installing RDoc documentation for ffi-1.9.10...
Installing RDoc documentation for rb-inotify-0.9.7...
Installing RDoc documentation for compass-1.0.3...
于 2016-04-27T23:08:14.133 に答える
-3

cd /Library/Ruby/Gems/2.0.0

開いた 。

右クリック 情報を取得

クリックロック

パスワードを配置

すべてを読み書きできるようにします。

于 2014-10-13T00:08:20.497 に答える
-4

gem のインストールまたは RubyGems の更新がアクセス許可エラーで失敗し、次のコマンドを入力します

sudo gem install cocoapods
于 2015-11-18T06:50:39.347 に答える
-6

これを使って作業しました。

$ sudo chown myuser /var/lib/gems

于 2014-08-27T00:55:08.953 に答える