Closed1
Bundleを使おうとしたらsudoを使えと言われる
久しぶりにBundleを使おうとしたら、以下のようなメッセージが表示される。
$ bundle
Using bundler 2.2.24
Using temple 0.8.2
Following files may not be writable, so sudo is needed:
/opt/rh/rh-ruby27/root/usr/bin
/opt/rh/rh-ruby27/root/usr/share/gems
/opt/rh/rh-ruby27/root/usr/share/gems/build_info
/opt/rh/rh-ruby27/root/usr/share/gems/cache
/opt/rh/rh-ruby27/root/usr/share/gems/doc
/opt/rh/rh-ruby27/root/usr/share/gems/extensions
/opt/rh/rh-ruby27/root/usr/share/gems/gems
/opt/rh/rh-ruby27/root/usr/share/gems/specifications
いつからか、bunldeの仕様が変わったらしい。これらはbundleのデフォルトのインストール先であり、そこに書き込み権限がないからsudo使ってね、というもの。sudoを使うとシステム全体にインストールされてしまうため、bundleを使う目的から外れてしまう。
これを解決するには、bundleのインストール先を指定してやれば良い。例えば./gems
にするなら、
export GEM_HOME=$HOME/.gem
bundle config set --local path ~/.gem
とする。これでGemfileがあるところでbundle install
すると、以後./gems
にインストールされる。
そこにインストールされたファイルを実行したい場合、PATHを通すか、bundle exec
で実行するかの二択。パスを通す場合は、例えば
export PATH=$PATH:~/.gem/ruby/2.7.0/bin
などとする必要があるが、バージョン情報などが生で入ってしまっているため、bundle exec
経由で実行した方が良さそう。
環境変数GEM_HOME
の設定は.bashrc(.zshrc)にも追加しておくこと。
なお、現状のbundleの設定はbundle config
で調べることができる。
$ bundle config
Set for the current user (/home/username/.bundle/config): "/home/username/.gem"
このスクラップは2023/03/15にクローズされました