brewコマンドでパッケージをインストールしようとしたときに、いきなりfatal: couldn't find〜とメッセージが出たときの対処。

自分の場合はrbenvの新しいrubyのバージョンをインストールしようとしたときに遭遇しました。

以下のように、brew updateコマンドが使えません!

$ brew update && brew upgrade ruby-build
fatal: couldn't find remote ref refs/heads/master
^Cfetch-pack: unexpected disconnect while reading sideband packet
fatal: protocol error: bad pack header

そんなときは、brew tap --repairを実行すれば解消されます。

$ brew tap --repair
remote: Enumerating objects: 154, done.
remote: Counting objects: 100% (154/154), done.
remote: Compressing objects: 100% (82/82), done.
remote: Total 154 (delta 97), reused 124 (delta 71), pack-reused 0
Receiving objects: 100% (154/154), 30.38 KiB | 3.04 MiB/s, done.
Resolving deltas: 100% (97/97), completed with 2 local objects.
From https://github.com/dart-lang/homebrew-dart
 * [new branch]      main                -> origin/main
 * [new branch]      sortie-pull-request -> origin/sortie-pull-request
==> dart-lang/dart: changed default branch name from master to main!

こちらの記事を参考にさせていただきました。 こちらのブログ

魔法の呪文のようですが、このコマンドを実行することでbrewに関する設定を最新の状態に追従させてくれるのでしょう。

今回はbrewで参照しているリポジトリのブランチ名がmasterからmainに切り替わったことでリポジトリの情報を取得することができなくなり、エラーが発生していたようです。

参考元のブログでは、ローカルに落としてきたリポジトリの削除もされているようですが、自分の場合は不要でした。

この記事の環境情報

  • Homebrew 4.0.1