setup-beam の「Requested loose Erlang/OTP version (25) not found in version list」(ubuntu-26.04)
ubuntu-latest は、2026年10月19日から11月19日にかけて Ubuntu 24.04 から 26.04 に移ります(ほかに変わること)。erlef/setup-beam は Erlang/OTP を builds.hex.pm から落とし、その一覧は Ubuntu の版ごとに別です。ubuntu-26.04 の一覧は OTP 26.0 から始まります。そのため、OTP 24 や 25 を求める matrix の組は 26.04 ではセットアップのステップで止まり、同じ組が 24.04 ではまだ入ります(setup-beam #498)。
出る2つの文
setup-beam v1.24.1(いまの @v1)で OTP 25 を求めると:
Requested loose Erlang/OTP version (25) not found in version list, at /builds/otp/amd64/ubuntu-26.04/builds.txt, with mirrors https://builds.hex.pm. Should you be using option 'version-type': 'strict'?
最後の問いは、loose で見つからなかったときに毎回付きます。26.04 の OTP 24 と 25 には 24.x も 25.x のビルドも無いので、version-type: strict にしても見つかりません。
setup-beam v1.24.0 以前(@v1.20.4 のような固定や、2026年6月28日より前のコミットの SHA)では、どの OTP でも落ちます。26.04 のイメージを知っているのは v1.24.1 からだからです:
Tried to map a target OS from env. variable 'ImageOS' (got ubuntu26), but failed. If you're using a self-hosted runner, you should set 'env': 'ImageOS': ... to one of the following: [...]
こちらは固定を v1.24.1 以降に動かせば直ります。ImageOS についての助言はセルフホストランナー向けです。GitHub ホストのランナーで ImageOS: ubuntu24 にすると、24.04 のビルドを 26.04 に落とすことになり、26.04 にはもう無いライブラリを求めることがあります。
builds.hex.pm にある ubuntu-26.04 向けのビルド
2026年11月4日に両方の一覧を読みました(amd64。arm64 も同じ版から始まります):
- ubuntu-26.04:OTP 26.0〜26.2.5.21、27.x は 27.3.4.19 まで、28.x は 28.5.0.8 まで、29.x は 29.1.2 まで。27 以降のリリース候補と
maintのビルドもあります。 - ubuntu-24.04:上と同じものに加えて、OTP 24.3.4〜24.3.4.17 と、25.x の 25.3.2.21 まで。
26.04 向けには 26.0 より古いものは作られていないので、待っても直りません。
直し方1:その組を OTP 26 以降に上げる
- uses: erlef/setup-beam@v1
with:
otp-version: '26'
elixir-version: '1.16'
Elixir も一緒に上げます。Elixir の対応表では、OTP 26 は Elixir 1.14.5 からで、1.13 以前は OTP 25 までです(Compatibility and deprecations)。
直し方2:OTP 24 と 25 は 24.04 に残す
古い OTP のリリースもまだ試すなら、その組には古いイメージを渡します:
strategy:
matrix:
include:
- otp: '25'
elixir: '1.14'
os: ubuntu-24.04
- otp: '27'
elixir: '1.18'
os: ubuntu-latest
runs-on: ${{ matrix.os }}
GitHub が 24.04 のイメージを終えるまでは使えます。26.04 に無い Python や Ruby の版にも同じ形が効きます:setup-python の「was not found」・setup-ruby の「Unavailable version」。
見分け方
- 文の中のパスが一覧の名前です。
/ubuntu-26.04/builds.txtなら、ジョブは 26.04 で動いています。 - 「Set up job」の Runner Image の欄が
ubuntu-26.04かubuntu-24.04かを見ます。11月19日までは、再実行が 24.04 に当たって通ることがあるので、再実行が緑でも何も確かめたことになりません。 - OTP は入り、そのあと NIF やポートのプログラムが「cannot open shared object file」で読み込めないなら、24.04 のキャッシュやバイナリのほうが疑わしいです:Ubuntu 26.04 の「cannot open shared object file」。
ほかの 26.04 の失敗
- Ubuntu 26.04 の /tmp で「disk quota exceeded」:最初の 26.04 のイメージは
/tmpが約 7.9G の tmpfs(ユーザーごとのクォータつき)だったので、/tmpでの大きなビルドが落ちました。TMPDIRを$RUNNER_TEMPにします。 - Ubuntu 26.04 の GCC 15 で通らなくなった C と C++ のビルド:既定の gcc が 13 から 15 に上がるので、C は C23 としてコンパイルされ、古い警告の6つがエラーになり、C++ のヘッダーは
<cstdint>を読み込んでくれなくなります。 - Ubuntu 26.04 の setup-ruby の「Unavailable version」:26.04 向けには Ruby の各系列の一部のパッチしか作られていないので、
.ruby-versionの 3.4.2 のような固定は Ruby のステップで止まります。 - Ubuntu 26.04 の「cannot open shared object file」:libxml2 は
libxml2.so.16、ICU は 78 なので、24.04 で保存したキャッシュや 24.04 向けのバイナリがlibxml2.so.2やlibicudata.so.74を見つけられません。 - Ubuntu 26.04 の apt:名前が変わった・無くなったパッケージ。
- 「coreutils: unknown program」:基本のコマンドのほとんどが uutils です。
失敗したジョブを IntelliJ IDEA から見るなら
Pipeline Inbox for GitHub Actions Workflows は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。すべてのリポジトリの実行を、ジョブ・ステップと一緒に IDE のツールウィンドウに並べ、いまのブランチの実行はステータスバーに出ます。読むのは無料、失敗したジョブの再実行・キャンセル・ワークフローの実行・デプロイのレビューは Pro(月 US$1.50・30日の無料試用つき)です。
GitHub と GitHub Actions は GitHub, Inc. の商標、Ubuntu は Canonical Ltd. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは GitHub, Inc.・Canonical・Erlang Ecosystem Foundation・Hex・Elixir のプロジェクト・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:「The ubuntu-latest label will migrate to Ubuntu 26」 · Ubuntu 26.04 の setup-ruby の「Unavailable version」 · setup-python の「was not found」 · IntelliJ IDEA で使える GitHub Actions のプラグインの比較 · English