Techioz Blog

パスにアクセス許可を与える

概要

このガイドに従って Ruby をインストールしていますが、このコマンドを実行しようとするとき以外はすべて問題ありません

Rails new myapp -d mysql

このエラーが発生した場所

  run  bundle install
There was an error while trying to write to
`/home/fil/.bundle/cache/compact_index/rubygems.org.443.29b0360b937aa4d161703e6160654e47`. It is likely that you need to
grant write permissions for that path.
         run  bundle exec spring binstub --all
bundler: command not found: spring
Install missing gem executables with `bundle install`

これを解決する方法はありますか?

解決策

ある時点で root としてバンドル インストールを (sudo バンドル インストール経由で) 実行したようですが、これは決して実行すべきではありません。 @GurmukhSinghが示唆しているように、この問題を回避するためにもう一度sudoを実行することもできますが、それは問題を悪化させるだけであり、セキュリティの観点からは良い考えではありません。

Bundler キャッシュ内で fil が所有していないファイルを検索する場合 (ユーザー名が fil であると仮定して)、次のコマンドを実行できます。

find ~/.bundle/cache ! -user fil -ls

少しでも何かが返された場合、問題はそれらのファイルが root (または他のユーザー) によって所有されている可能性があります。 -ls フラグを指定して検索すると、それらの所有者がわかります。

問題のあるファイルを削除してバンドル インストールを再度実行することも、次のコマンドを使用してファイルの所有権を変更することもできます。

chown -R fil ~/.bundle/cache

キャッシュ ディレクトリだけでなく、~/.bundle 内のすべてのファイルをチェックする必要がある場合があります。

今後は、sudo 経由でバンドル インストールを実行しないでください。