宝石のインストール許可の問題


90
qichunren@zhaobak:~> gem install hpricot
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8 directory.

現在のログインユーザーはqichunrenであり、qichunreユーザーは.gem dirで書き込み権限を持っています。gemが最初に自分のホーム.gem dirにファイルをインストールしない理由を知りたいですか?私のGem Commonが最初に/opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8にファイルをインストールする理由

回答:


52

システム全体のRubyインストールの場合は、rootになります。例えば:

$ sudo gem install hpricot

ただし、開発を含む多くの状況での最新のアプローチは、Rubyを通常のユーザーとして簡単にインストールして使用できるツールを使用することです。これにより、rootになる必要がなくなります。そのようなツールはいくつかありますが、私が使用するのはRVMです。

# install rvm into your ~
$ \curl -sSL https://get.rvm.io | bash -s stable

# install latest version of ruby into your ~
$ rvm install ruby

# installs a gem into your ~
$ gem install $SOME_GEM_NAME

40
sudoはrootとしてインストールするため、通常のユーザーを使用している場合はアクセスできないため、使用しないでください。RVMとgemsetを使用します。
ライアン

4
rvm gem install hpricot
AJP

4
この回答を削除することをお勧めします。あなたはポイントを守り、人々に多くの頭痛の種を救います。
Olhovsky

172

設定GEM_HOMEGEM_PATHてみて~/.gem

現在のターミナルセッションでは、次のように入力します。

export GEM_HOME=~/.gem
export GEM_PATH=~/.gem

端末を開くたびにこれらを設定する場合は、上記のコマンドを~/.bashrcファイルに追加します。

カスタムruby環境をセットアップするためのより包括的なソリューションについては、ファイルの使用について説明しているSite5KBのこのチュートリアルを参照してください.gemrc


11
これが実際の正解です。必要がない場合は、sudoを使ってインストールしないでください。
ジェシーオブライエン

回答のリンクが変わったようです。このガイドの最初のステップは、私にとっても同じことを達成しました。kb.site5.com
Mike S

@MikeSlutsky指摘してくれてありがとう。将来、壊れたリンク(または変更されて関連性がなくなったリンク)を見つけた場合、適切な代替品があると思われる場合は、「編集」の提案を送信してください。
貧弱

@meagar @ Mike-Slutskyによって提供されたリンクを更新しましたが、これは.gemrc構成のドキュメントであることに気付きました。ruby gemの初心者にとって、あなたのソリューションが私が追加したはるかに単純なものであると私が理解するとき、これは気が遠くなるようなものです。解決策は私にとってはうまくいきますが、ルビーの初心者として、私の変更があなたの意図に沿っていることを確認してください。
David LeBauer、2015

1
GEM_PATHをグローバルPATHに追加することを忘れないでください。これが私がすることですPATH=$HOME/.gems/bin:$HOME/bin:$PATH GEM_HOME=$HOME/.gems GEM_PATH=$HOME/.gems:/var/lib/gems/2.1.0:/usr/lib/ruby/gems/2.1.0 export PATH GEM_HOME GEM_PATH
。–

8

1and1ホスティングを通じて共有サーバーでこのエラーが発生しました。私の解決策は--user-install、ログインしたユーザー(共有サーバー環境で必要なすべて)の例にインストールするオプションを追加することでした。sassのインストール

gem install sass --user-install

私はけれども興味深いことに、私はこのエラーを取得していている指定されました--user-install
sschuberth 2018

4

rbenvを使用していて、これが発生している場合は、.bash_profileに以下を追加する必要があります。

export RBENV_ROOT="$HOME/.rbenv"

if [ -d $RBENV_ROOT ]; then
  export PATH="$RBENV_ROOT/bin:$PATH"
  eval "$(rbenv init -)"
fi

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.