Macを使ってSolana Anchorをnpmでバージョンアップできない

Install Anchor に注意事項含めて、すべて記載されているが、うっかり見落としてしまい、npmインストールしてハマったため、そのときのメモ。

現象

Mac(Big Sur 11.6)で、Serum Anchor(0.19.0)をnpm経由でバージョンアップしたところ、Macは非対応の旨のエラー。

% anchor --version
anchor-cli 0.19.0

% npm i -g @project-serum/anchor-cli
npm ERR! code EBADPLATFORM
npm ERR! notsup Unsupported platform for @project-serum/anchor-cli@0.20.1: wanted {"os":"linux","arch":"x64"} (current: {"os":"darwin","arch":"x64"})
npm ERR! notsup Valid OS:    linux
npm ERR! notsup Valid Arch:  x64
npm ERR! notsup Actual OS:   darwin
npm ERR! notsup Actual Arch: x64

原因

npmは、Linuxしか対応していない(公式サイトにも明記あり)。

Only x86_64 Linux is supported currently

Anchorインストールは結構前だったので、どういう方法でインストールしたのか忘れていた。
実際は、npmではなくcargoでインストールしていた。

対応

Build from source for other operating systems の記載に沿って、以下を実行する。

% cargo install --git https://github.com/project-serum/anchor --tag v0.20.1 anchor-cli --locked

【注意】Anchorはバージョンが頻繁にアップデートされるため(早いと数日で)、上記コマンドをコピペせずに、公式サイトのコマンドを直接コピペする必要あり

そしてバージョンアップ成功(0.19.0 → 0.20.1)。

% anchor --version
anchor-cli 0.20.1