web-dev-qa-db-ja.com

権限が拒否されたため、「バンドルインストール」が失敗しました

新しいサーバーにbundler gemをインストールしました。bundle installを実行しようとすると、次のエラーで失敗しました。

Unfortunately, a fatal error has occurred. Please see the Bundler troubleshooting documentation at http://bit.ly/bundler-issues. Thanks!
/usr/lib/Ruby/1.9.1/fileutils.rb:247:in `mkdir': Permission denied - /var/lib/gems (Errno::EACCES)

私のサーバーは、デフォルトのRuby 1.9.3パッケージがインストールされたDebian wheezy(7.1)です。/etc/gemrcを次のように設定しました:gem: --user-installにより、ユーザーがgemをローカルにインストールできるようになりました。

バンドラーgemはユーザーのgems dir ~/.gem内に次のコマンドでインストールしたようにインストールしました:gem install bundler(Sudoなし)。しかし、バンドル担当者はgemを/var/lib/gemsにインストールしたいのですが、私のgemsディレクトリ:(

Bundlerの何が問題なのか理解できません...なぜ、gemを(私のgemsローカルディレクトリに)必要な場所にインストールしようとしないのですか?

ps:自分のラップトップで、archlinuxとデフォルトRuby 2.0.0パッケージがインストールされている場合、ユーザーのgemをインストールするためのバンドラーに問題はありません。

16
JoJoS

見つけた!

Rubygemをこのように更新しましたgem update --system。しかし、私のgem: --user-install/etc/.gemrc制限により、私のローカル宝石のみが更新されました。バンドラーが動作するとき、それは私のものではなくグローバルなrubygemを使用します。

この問題を修正するために、グローバルルビジェムをSudo gem update --system --no-user-installに更新しました。

そして、すべてうまくいきます!

24
JoJoS

bundle installは、gemrc設定を使用しません。 (ただし、最近の更新では 変更された可能性があります ですが、更新は〜/ .gemrcのみをロードし、/ etc/gemrcはロードしないようです)

bundle install --path ~/.gemで好きなことができます

ただし、rbenvまたはRVMを動作させることを強くお勧めします。 rbenvで「同じ結果」が得られたと言いました。 rbenvがインストールされているときに、gemが/var/lib/gemsにインストールしようとしていた場合、そのコマンドを実行していたのはrbenv-installed Ruby)ではありませんでした。 system Ruby(これは、インストールされたrbenvを選択するまで続きますRubyがデフォルトになる))、またはrbenvが正しく実行されていません。

9
Legion

バンドルドキュメント によると、$BUNDLE_PATHまたは$GEM_HOME env変数を設定して、デフォルトの書き込み可能な場所にすることができます。

export BUNDLE_PATH=~/.gems

bundle install

ルートアクセスを{持っていない/使用したくない}場合は、非常に便利です。

9
Oncle Tom