新しいサーバーに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をインストールするためのバンドラーに問題はありません。
見つけた!
Rubygemをこのように更新しましたgem update --system
。しかし、私のgem: --user-install
の/etc/.gemrc
制限により、私のローカル宝石のみが更新されました。バンドラーが動作するとき、それは私のものではなくグローバルなrubygemを使用します。
この問題を修正するために、グローバルルビジェムをSudo gem update --system --no-user-install
に更新しました。
そして、すべてうまくいきます!
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が正しく実行されていません。
バンドルドキュメント によると、$BUNDLE_PATH
または$GEM_HOME
env変数を設定して、デフォルトの書き込み可能な場所にすることができます。
export BUNDLE_PATH=~/.gems
bundle install
ルートアクセスを{持っていない/使用したくない}場合は、非常に便利です。