HomeBrewアップデート時に”Error: Unexpected method 'appcast' called on Cask adoptopenjdk11.”が出る状況をfixする

HomeBrewアップデート時に”Error: Unexpected method 'appcast' called on Cask adoptopenjdk11.”が出る状況をfixする

HomeBrewアップデート時に毎回adoptopenjdk11がエラーを出していました。prune等も発生しない場合にadoptopenjdk11のエラーが目立ちすぎるため、重い腰をあげてみました。
Clock Icon2025.02.17

以前よりローカル環境にてHomeBrewをアップデートする際にadoptopenjdk11でエラーが出ることは確認していました。

**Error: Unexpected method 'appcast' called on Cask adoptopenjdk11.**

目的とするライブラリのアップデート自体は正常に完了するため放置していましたが、ログにおけるエラー文出力の占める割合が多くなるとやや目障りになるため、対処しました。

発生する原因

解決方法としてはbrew cleanup --prune=allを実行する手もあるようですが、問題はこれで解決しないケースであり、今回該当しました。対処としては以下の手順を実施します。

  1. brew edit --cask adoptopenjdk11
  2. Remove or comment out the line containing appcast.
  3. brew install --cask adoptopenjdk11

手順2ですが、今回は9行目(appcast ~)のコメントアウトとなります。

# PLEASE DO NOT EDIT THIS FILE. EDIT Templates/adoptopenjdk.rb.tmpl
cask "adoptopenjdk11" do
  version "11.0.11,9"
  sha256 "9a20441ff21c6aa2ebb6287f712e6c647d7b66f55ac23bdfb5e891f25efab1b7"

  # github.com/AdoptOpenJDK was verified as official when first introduced to the cask
  url "https://github.com/AdoptOpenJDK/openjdk#{version.major}-binaries/releases/download/jdk-11.0.11%2B9/OpenJDK11U-jdk_x64_mac_hotspot_11.0.11_9.pkg",
      verified: "https://github.com/AdoptOpenJDK"
  # appcast "https://github.com/AdoptOpenJDK/openjdk#{version.major}-binaries/releases/latest"
  name "AdoptOpenJDK 11"
  desc "AdoptOpenJDK OpenJDK (Java) Development Kit"
  homepage "https://adoptopenjdk.net/"

  pkg "OpenJDK11U-jdk_x64_mac_hotspot_11.0.11_9.pkg"

  postflight do
    system_command "/usr/sbin/pkgutil", args: ["--pkg-info", "net.adoptopenjdk.11.jdk"], print_stdout: true
  end

  uninstall pkgutil: "net.adoptopenjdk.11.jdk"
end

実施時のログは以下の通り。

手順実行前はエラーとなります。

brew install --cask adoptopenjdk11                                                         [~]
==> Auto-updating Homebrew...
Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with
HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Error: Unexpected method 'appcast' called on Cask adoptopenjdk11.
Follow the instructions here:
  https://github.com/Homebrew/homebrew-cask#reporting-bugs
Warning: Not upgrading adoptopenjdk11, the latest version is already installed

~ 10s

手順実行後はエラーが消えたことを確認できました。

brew install --cask adoptopenjdk11                                                         [~]
Warning: Not upgrading adoptopenjdk11, the latest version is already installed

他caskでのappcastが気になる場合は、エラーが発生しないインストール済みcaskをbrew list --caskから確認して、brew edit --cask XXXを実行し、表示されるrbファイルを確認してみましょう。appcastはlivecheckによるアプリケーションバージョンチェックと同等のものであり、それらのcaskではlivecheckが利用されているはずです。

livecheckやappcastは最新バージョン(latest)を常に追うための仕組みです。brewのバージョンチェックデフォルト動作は安定版(stable)、ヘッド(head)、ホームページ(homepage)を追っていく仕組みで、その後にlivecheckやappcastを利用します。adoptopenjdk11は最初にgithub.com/AdoptOpenJDKの安定版が指定されているため、appcastを無効にしてもダウンロード自体は問題ないということになります。

あとがき

homebrewのエラー出力は大量のpruneログに埋もれがちで、かつ動作に問題がない場合は放置しがちになります。気になる場合は、再実行して確認することをお勧めします。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.