ロゴテキスト ロゴ

    Homebrewでformulae require at least a URLエラー

    Homebrewでformulae require at least a URLエラー

    M1 MacでHomebrewを使っていたところ以下のようなエラーが出るようになりました

    Error: formulae require at least a URL
    /opt/homebrew/Library/Homebrew/formula.rb:253: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>'

    起きる条件は brew install xx brew upgradeなどbrewコマンドを使うと必ず最後に表示される、という現象です。


    brewコマンドの最後で表示されるだけでinstall等が失敗するわけではないので実害はありません。

    とは言っても、毎回出られると困るしな、と思って調べてみました。



    結論としては brew untap <リポジトリ名>で解消する事が出来ました!


    レアケースな気もしますが、備忘録も兼ねて残しておきます。

    検証した環境

    1 M1 Mac macOS Big Sur 11.2
    2 Homebrew 3.0.5

    起きたこと

    brewコマンドを使うと必ず最後にエラーが起きるようになりました。

    $ brew install vips
    ==> Downloading https://homebrew.bintray.com/bottles/cfitsio-3.490.arm64_big_sur.bottle.tar.gz
    ・・・
    Removing: /Users/yuu/Library/Caches/Homebrew/gdbm--1.18.1_1.arm64_big_sur.bottle.tar.gz... (208.4KB)
    Error: formulae require at least a URL
    /opt/homebrew/Library/Homebrew/formula.rb:253:in `determine_active_spec'
    ・・・


    brew doctorを実行してもエラーが起きるので参りましたw

    $ brew doctor
    Please note that these warnings are just used to help the Homebrew maintainers
    with debugging if you file an issue. If everything you use Homebrew for is
    working fine: please don't worry or file an issue; just ignore this. Thanks!
     
    Warning: "config" scripts exist outside your system or Homebrew directories.
    ・・・
    Error: formulae require at least a URL
    /opt/homebrew/Library/Homebrew/formula.rb:253:in `determine_active_spec'
    ・・・

    Warningが出てるからまずそれ解消しようぜ!ていう話でもあります。笑

    やったこと

    2013年にOpenしたIssueなので参考にならないんじゃないか?と思ったらまさにこれでした ↓

    Most commands fail with “Error: formulae require at least a URL” · Issue #22707 · Homebrew/legacy-homebrew


    参考にしたIssue



    この画像に書かれているbrew readallを実行します

    $ brew readall
    Error: Invalid formula: /opt/homebrew/Library/Taps/git-chglog/homebrew-git-chglog/git-chglog.rb
    formulae require at least a URL


    brew readallが何をしているか分からないのでhelpを見ます

    $ brew readall -h
    Usage: brew readall [--aliases] [--syntax] [tap ...]
     
    Import all items from the specified tap, or from all installed taps if none is
    provided. This can be useful for debugging issues across all items when making
    significant changes to formula.rb, testing the performance of loading all
    items or checking if any current formulae/casks have Ruby issues.

    google先生で日本語に翻訳すると、

    指定されたタップから、またはインストールされているすべてのタップからすべてのアイテムをインポートします。


    これは、作成時にすべてのアイテムの問題をデバッグするのに役立ちます。

    というわけでTapしたリポジトリのデバッグが出来るということ、なんですね。




    思い返してみると、私git-chglogというCHAGELOGを作成するのを支援してくれるツールを利用してまして、

    git-chglog/git-chglog: CHANGELOG generator implemented in Go (Golang).


    このコマンドをインストールする時にtapを実行してたんですね。

    $ brew tap git-chglog/git-chglog


    この時は特段問題が起きていなかったと記憶しているんですが、その後に何かがぶつかってこのようにエラーが出るようになってしまったのかもしれません。

    解決する(untapする)

    リポジトリの登録を解除するuntapを実行します

    $ brew untap git-chglog/git-chglog
    Untapping git-chglog/git-chglog...
    Untapped 1 formula (40 files, 45.7KB).


    これで改めてbrew readallを実行すると

    $ brew readall

    何も表示されなくなった!



    じゃあdoctorは、

    $ brew doctor
    Please note that these warnings are just used to help the Homebrew maintainers
    with debugging if you file an issue. If everything you use Homebrew for is
    working fine: please don't worry or file an issue; just ignore this. Thanks!
    ・・・

    Warningは表示されるけど、エラーメッセージは表示されなくなりました ☺️

    プロフィールの背景画像 プロフィール画像
    Yuki Takara
    都内でフリーランスのエンジニアをやってます。フロントとアプリ開発メインに幅広くやってます。