🍺

[homebrew] Error: formulae require at least a URL

homebrew で初見のエラーと遭遇したのですが解決したので流れを残しておきます。

# 環境

  • Mac: Mac mini (M1, 2020)
  • OS: macOS 11.2.3
  • homebrew:
    • Homebrew 3.0.10
    • Homebrew/homebrew-core (git revision dacbf46117; last commit 2021-03-31)
    • Homebrew/homebrew-cask (git revision 0fcda4d3cf; last commit 2021-03-31)

# 発生したこと

以下のようにbrew doctorでエラーが生じました。

❯ brew doctor
Error: formulae require at least a URL
/opt/homebrew/Library/Homebrew/formula.rb:271:in \`determine\_active\_spec'
/opt/homebrew/Library/Homebrew/formula.rb:206:in \`initialize'
/opt/homebrew/Library/Homebrew/formulary.rb:153:in \`new'
/opt/homebrew/Library/Homebrew/formulary.rb:153:in \`get\_formula'
/opt/homebrew/Library/Homebrew/formulary.rb:305:in \`get\_formula'
/opt/homebrew/Library/Homebrew/formulary.rb:366:in \`factory'
/opt/homebrew/Library/Homebrew/formulary.rb:413:in \`from\_keg'
/opt/homebrew/Library/Homebrew/formulary.rb:386:in \`from\_rack'
/opt/homebrew/Library/Homebrew/diagnostic.rb:739:in \`block in check\_for\_unreadable\_installed\_formula'
/opt/homebrew/Library/Homebrew/diagnostic.rb:738:in \`each'
/opt/homebrew/Library/Homebrew/diagnostic.rb:738:in \`check\_for\_unreadable\_installed\_formula'
/opt/homebrew/Library/Homebrew/cmd/doctor.rb:64:in \`block in doctor'
/opt/homebrew/Library/Homebrew/cmd/doctor.rb:57:in \`each'
/opt/homebrew/Library/Homebrew/cmd/doctor.rb:57:in \`doctor'
/opt/homebrew/Library/Homebrew/brew.rb:122:in \`<main>'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

formulae に URL がないよ、ということで怒られている感じです。

# 解決

こちらのページを参考にしました

Homebrew で formulae require at least a URL エラー | tech-broccoli.life (opens new window)

どうやらtapに問題がある可能性があるようです。
現在自分の環境のtap一覧は以下のようになっています。

❯ brew tap
a-know/tap
homebrew/bundle
homebrew/cask
homebrew/cask-fonts
homebrew/core
jesseduffield/lazygit
nektos/tap
px4/px4
skanehira/docui
1
2
3
4
5
6
7
8
9
10

前掲のページを参考にbrew readallを実行したところ、actの読み込みが失敗しているようでした。

❯ brew readall
Error: Invalid formula: /opt/homebrew/Library/Taps/nektos/homebrew-tap/Formula/act.rb
formulae require at least a URL
1
2
3

リポジトリを確認したところ、どうやらtapは不要になっているようです。

nektos/act: Run your GitHub Actions locally 🚀 (opens new window)

さらにログを追ったところ、以下のプルリクで修正されていました。半年ほど前のものです。

Fix Homebrew install instructions by twpayne · Pull Request #374 · nektos/act (opens new window)

数日前まではbrew doctorも普通に動いていたはずなので、なぜ今になって問題が発生したのかよくわかりませんが、とりあえずtapを消したほうが良さそうです。

ということでbrew untapを実行します。

❯ brew untap nektos/tap
Untapping nektos/tap...
Untapped 1 formula (37 files, 48.6KB).
1
2
3

これでbrew doctorが正常終了するようになりました。

❯ brew doctor
Your system is ready to brew.
1
2

念の為actを再インストールしておきます。

❯ brew uninstall act
Uninstalling /opt/homebrew/Cellar/act/0.2.20... (5 files, 18.6MB)

❯ brew install act
==> Downloading https://homebrew.bintray.com/bottles/act-0.2.21.arm64\_big\_sur.bottle.tar.gz
==> Downloading from https://d29vzk4ow07wi7.cloudfront.net/3fc1e135316268f24528e6ceb830092c97441880575f6e5b6aee7a8e71b5ebb9?response-content-disposition=at
==> Pouring act-0.2.21.arm64\_big\_sur.bottle.tar.gz
🍺 /opt/homebrew/Cellar/act/0.2.21: 5 files, 19.7MB
Removing: /Users/kawarimidoll/Library/Caches/Homebrew/act--0.2.20.tar.gz... (6.7MB)
1
2
3
4
5
6
7
8
9

# まとめ

brew doctorが失敗して慌てましたが、原因はtapの変更によるものでした。
今後は類似の問題に遭遇しても焦らず対処できそうです。

ちなみに、複数台 Mac を所有しているのですが、マシンによって発生したりしなかったりでした。intel chip の Macbook では問題は起きなかったので、M1 依存の問題かもしれません。