【CocoaPods】can’t find gem cocoapods (>= 0.a) with executable pod を解消する方法

マジで急に使えなくなりました。
ピンポイントのエラー解消法はいろんな記事に載っているのですが、綺麗に直ったものが意外となかったので、同じ現象が起きた人用にまとめたいと思います。

開発環境(前提条件)

・Xcode14.0
・Swift5
・CocoaPods

エラー内容

Pods にアップデートあるかなーと思ってドキワクで pod update を試したところ、急に以下のようなエラーを吐かれてしまいました。

/Library/Ruby/Site/2.6.0/rubygems.rb:265:in `find_spec_for_exe': can't find gem cocoapods (>= 0.a) with executable pod (Gem::GemNotFoundException)
	from /Library/Ruby/Site/2.6.0/rubygems.rb:284:in `activate_bin_path'
	from /usr/local/bin/pod:23:in `
'

1週間前まで使えてたのに…と思い、試しに pod install を行ったところ、同じエラー内容が発生。
ビビり散らかしてテキトーにバージョンを確認したところ…

% pod --version
/* 上記コマンドを実行すると... */
/Library/Ruby/Site/2.6.0/rubygems.rb:265:in `find_spec_for_exe': can't find gem cocoapods (>= 0.a) with executable pod (Gem::GemNotFoundException)
	from /Library/Ruby/Site/2.6.0/rubygems.rb:284:in `activate_bin_path'
	from /usr/local/bin/pod:23:in `
'

うひょー (ノ^o^)ノ
同じエラーだし、なぜか pod が使えんくなってます。
身に覚えがないし怖くなったんで、無いんならインストールすりゃええんじゃ!と思い、
sudo gem install cocoapods を行ってやったところ

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0 directory.
	/Library/Ruby/Site/2.6.0/rubygems/installer.rb:712:in `verify_gem_home'
	/Library/Ruby/Site/2.6.0/rubygems/installer.rb:902:in `pre_install_checks'
    .
    .
    .
    /usr/bin/gem:21:in `
'

詰む詰む。└( ^ω^ )」

修正方法

エラー内容には You don’t have write permissions for the xxxxx と書かれているので、「あなたには xxxxx へのアクセス権ないよ」言われてます。
先週はいつも通りアップデートできていたので、いつ剥奪されたんや…って感じです。笑
そこ追求するほど探究心ないので、僕は修正できる方法を載せますが、有識者や経験者の方いたらぜひ教えてください。

一度アンインストールをする

最初は gem をアンインストールしていなかったのですが、僕は当記事のエラーを解決するために時間を要したので、一度スッキリさせようと思って以下のコマンドを実行しました。

% sudo gem uninstall --all
/* yNで答える形式 */

このあとに同じ手順を行うと解決できたので、ネットをぐるぐる巡っている人は試してみるのもいいと思います。
もちろん自己責任で。

rbenv をインストール

インストールできるバージョンを調べて、使いたいバージョンを指定してインストールします。

% rbenv install -l
/* 上記コマンドで以下のようなバージョンが表示されます */
2.6.10
2.7.6
3.0.4
3.1.2
jruby-9.3.8.0
mruby-3.1.0
picoruby-3.0.0
rbx-5.0
truffleruby-22.2.0
truffleruby+graalvm-22.2.0

僕は執筆時の最新バージョンである 3.1.2 使います。
以下のコマンドを順に入力してください。

% rbenv install 3.1.2
% rbenv global 3.1.2
% rbenv rehash

どういう処理か調べながら作業を行なっていますが、2行目の rbenv global は、システム全体で使用する Ruby のバージョンを指定するためのコマンドで、最後の rbenv rehash は、こちらの記事によると「明示的に記載しなくても gem install のタイミングで行われる」とのこと。
先ほども言いましたが、僕は当記事のエラーを解決するために時間を要したので、念の為に手動でも行いました。

パスを通す

パスを通して、設定されたか確認します。

% export PATH="$HOME/.rbenv/versions/3.1.2/bin:$PATH"
% rbenv versions

/* 上記コマンドで設定されているバージョンを確認できます */
system
* 3.1.2 (set by /Users/@@@@@/.rbenv/version)

パスの @@@@@ はユーザー名が表記されています。

最終確認

シェルを再起動後に ruby と gem のパスを確認し、以下のように表示されていたら OK です。

% which ruby
/Users/@@@@@/.rbenv/versions/3.1.2/bin/ruby

% which gem
/Users/@@@@@/.rbenv/versions/3.1.2/bin/gem

これで gem install cocoapods を行うことで、CocoaPods がインストールできるようになってるはずです。

さいごに

解決するまでに半日以上は使いました。笑
つーかアクセス権はいつの間に剥奪されたんじゃ…

コメント