BEACHSIDE BLOG

Azure と GitHub と C# が好きなエンジニアの個人メモ ( ・ㅂ・)و ̑̑

Function App の dev container を新規に使おうとするとエラーになる原因と解決方法

既に issue もあがってるので来週には修正されていると信じますが、エラー: bash: /usr/bin/func: cannot execute binary file: Exec format error の対処方法のメモです。

事象

2025年9月18日時点で、Azure Functions を利用するために Linux ベースの devcontainer を新規に作って Function App を実行しようと func コマンド打つとすると以下のエラーになります。

  • bash: /usr/bin/func: cannot execute binary file: Exec format error

ちなみに私の場合 Python の 3.12-bookworm をベースに features で Azure Functions Core Tools を指定しています。

原因をざっくりいうと、この指定により現時点でインストールされる Azure Functions Core Tools の latest: 4.3.0~preview1 がおわってるからです。

対処方法

npm が入っている container の場合

問題の 4.3.0-preview1 が install されていることを確認し、削除しましょう。

  • npm list
  • npm uninstall azure-functions-core-tools

後はバージョン指定をして npm からインストール。

  • npm i -g azure-functions-core-tools@4.2.2

インストール後、今まで開いていたターミナルは一度閉じ、新規にターミナルを開きます。

func -v をたたくと期待通り 4.2.2 がインストールされて動作することが確認できます。

npm が入っていない container の場合

npm が入っていない場合は apt で Azure Functions Core Tools を更新します。

まずは問題となってる azure-functions-core-tools 4.3.0~preview1-1 を削除します。ちなみに削除せずにインストールしようとすると、上書きに失敗して終わります。

  • sudo apt-get remove azure-functions-core-tools

そして 4.2.2-1 のバージョンを指定してインストール。

  • sudo apt-get update
  • sudo apt-get install azure-functions-core-tools-4=4.2.2-1

これで func -v とかで確認すると正常に動作します。

ターミナルを新規に開きなおさなくても正常に認識するはずですが、認識されない場合はターミナルを開きなおしてみましょうって感じでしょうか。

めちゃ個人的な話な余談ですが、4.2.2 は MCP の Streamable HTTP 対応なので、このバージョンにさげても MCP の実装については影響ないです。

参考

https://github.com/Azure/azure-functions-core-tools/issues/4649