7

を使用するコマンドはsudo、RBenv では機能しないようです。

ActiveRecord をインストールしようとしていますが、書き込み権限がないと表示されるので、これを試してみると:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /usr/local/rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1 directory.

それは言います:

sudo: gem: command not found

どうすればこれを回避できますか?

4

4 に答える 4

12

rbenv や RVM などのツールの背後にある考え方は、Ruby 環境全体が自分のワークスペース内にサンドボックスとして存在するsudoため、を使用する必要がないということです。

RVM はもともとシングル ユーザー向けに設計されていましたが、マルチユーザー構成が可能です。

私が見たり読んだりした限りでは、rbenv はシングルユーザー専用です。sudorbenv を使用する場合、Ruby 環境を操作または変更するために を使用する必要はありません。もしそうなら、何かが間違っています。を使おうとするとsudo、大変なことになります。すぐにはわからないかもしれませんが、最終的に何かがポップアップし、ファイルの所有権を自分に戻す必要があります。

Linux と Mac OS では、次を使用して非常に簡単に行うことができます。

sudo chown -R <your_user_name>:<your_group> ~/.rbenv

sudoスーパーユーザーのみがルートが所有するファイルの所有権を変更できるため、それを as で実行する必要があります。sudo権限をエスカレートして、それらを変更できるようにします。

于 2013-09-29T03:33:05.200 に答える
3

これはちょっと古いことだと思いますが、これは将来人々を助けるかもしれません:

rbenv-sudo は、sudo セッション内から rbenv が提供する Ruby と Gem を実行できるようにする rbenv のプラグインです。

https://github.com/dcarley/rbenv-sudo

于 2014-05-25T08:25:36.673 に答える
0

「 AWS EC2 に Ruby 2.0 と Rails 4.0.0beta をインストールする 」での私の回答は、役に立つかもしれません。

rbenvつまり、 rbenv によってインストールされた gem を使用するには、root ユーザーがその環境にロードされている必要があります。これは、次を追加することで実行できます

# /etc/profile.d/rbenv.sh
export RBENV_ROOT=/usr/local/rbenv
export PATH="${RBENV_ROOT}/bin:$PATH"
eval "$(rbenv init -)"

これは、 が機能するのに十分なはずsudoです。シェルスクリプトを書いている場合は、使用する必要があるかもしれません

. /etc/profile.d/rbenv.sh 

他のgemの実行可能ファイルを使用する前。

于 2013-09-28T20:29:09.820 に答える
-2

私の答えは少し遅れていますが、この問題に対する簡単な解決策があります。シンボリック リンクを使用して、binstub やその他の Ruby を使用できるようにします。

ln -s ~/.rbenv/bin/rbenv /usr/local/bin/rbenv
ln -s ~/.rbenv/shims/* /usr/local/bin

同じ問題を抱えている他のユーザーに役立つことを願っています。

于 2015-08-30T16:46:47.360 に答える