💎

rubyごと入れ直そうとrbenv uninstall x.x.xをしようとしたら大量のPermission deniedが出た

2024/06/10に公開

事象

Flutterアプリの環境構築をしようとしたらbundle installがこけ、以下のようなエラーが無数に出た

An error occurred while installing security (0.1.3), and Bundler cannot continue.

In Gemfile:
  fastlane was resolved to 2.219.0, which depends on
    security

前提

  • Apple M3 Pro 2023
  • gem/bundle/ruby/rbenvいずれのバージョンも動作している他の人と揃っている
$ rbenv --version
rbenv 1.2.0
$ ruby --version
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [arm64-darwin23]
$ gem --version
3.4.10
$ bundle --version
Bundler version 2.4.13

やったこと

  • とりあえずrubyごと入れ直すかと思い、rbnev uninstall 3.2.2を実行すると、無数のgemのPermission deniedが表示されて失敗
  • rbenvごと消せばどうにかなると思い、brewからrbenvを消して入れ直し、再度rbenv install 3.2.2bundle installを実行するが、失敗

解決と原因

おそらくこのissueと同じだった
https://github.com/rbenv/rbenv/issues/969

一度でも sudo gem install hoge のようにroot権限でgem installを実行してしまうと、gemのファイル群にroot権限が付与され、root権限で実行する他のコマンド(rbenv uninstallもこれにあたると思われる)からは削除できなくなってしまう模様

多分一回くらいは過去に実行している気がする。。

brew uninstall rbenvでrbenvごと消した時はエラーが出なかったので気付けなかった

上のissueの通り(書いてあるコマンドは違うが)、sudo権限でgemのファイル群を消し去ってからやり直すことでbundle installが通った

sudo rm -rf "$(rbenv prefix 3.2.2)"

Discussion