- 投稿者
久しぶりにMacのHomebrewをアップデートしようとしたらエラーが出て怒られてしまいました。
brew update
Error:
homebrew-core is a shallow clone.
To `brew update`, first run:
git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch –unshallow
This command may take a few minutes to run due to the large size of the repository.
This restriction has been made on GitHub’s request because updating shallow
clones is an extremely expensive operation due to the tree layout and traffic of
Homebrew/homebrew-core and Homebrew/homebrew-cask. We don’t do this for you
automatically to avoid repeatedly performing an expensive unshallow operation in
CI systems (which should instead be fixed to not use shallow clones). Sorry for
the inconvenience!
エラーを見つつ解決できたので備忘録として残しておきます。
brew updateでエラーが出たときの原因
とりあえずDeepLでエラー内容を翻訳してみました。
エラーが発生しました。
homebrew-core はシャロークローンです。
brew update」をするには、まず次のように実行します。
git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch –unshallow
このコマンドは、リポジトリのサイズが大きいため、実行に数分かかることがあります。
この制限は、GitHub の要請によるものです。
クローンの更新は、ツリーのレイアウトやトラフィックの関係で非常に手間のかかる作業となります。
Homebrew/homebrew-coreとHomebrew/homebrew-caskのツリーレイアウトとトラフィックのために、シャロークローンの更新は非常に高価な操作となります。私たちはこれを行いません。
CIシステムで高価なunshallow操作を繰り返し行うことを避けるために、自動的には行いません。
CI システムで高価な unshallow 操作を繰り返すことを避けるために、自動的には行いません (代わりに shallow clone を使用しないように修正されるべきです)。ご迷惑をおかけしました。
不便をおかけして申し訳ありません。
とのことです。ざっと読んでみたところざっくり以下のように書いているようです。
-
GitHubからの要請でシャロークローン(shallow clone)は重いからやめてほしいと言っている
-
代替コマンドがあるからそっちを実行してほしい
エラー文言でググってみると、やはり同じような現象に遭遇している記事がいくつかありました。
以下の記事が背景含め説明してくれているのでわかりやすかったです。
[brew update]Error:homebrew-core is a shallow clone.で失敗するのを解決
brew updateでエラーが出たときの解決策
解決策はエラー文言に書いているように、以下コマンドを実行します。
けっこう時間がかかります(おそらく5〜10分)。
git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
完了後に無事brew updateができるようになりました。
補足
上記コマンドの補足です。
git -Cについては以下記事が参考になります。
cdせずに任意のgitレポジトリを操作する-Cオプションの紹介
git fetch –unshallowについては以下記事が参考になります。
git clone –depth と git fetch –unshallow
unshallowは使ったことがなかったですが、すべてのコミットログを取得してきてくれるので今回のHomebrewのような巨大なリポジトリに対して使うケースが多そうです。