ひとりごとの作業記録です。
0.ゴール
Macで「node 14.18.1」でビルドしたい。
ただし、特定プロジェクトでのみ「node 14.18.1 」を使いたい。
開発環境は「MacOS Sequoia 15.2」
Macはアップルシリコン
1.状況確認
node -v
v22.13.1
現在、「v22.13.1」を使ってる。ダメだダメだダメだ!新しすぎる。
もっと、古くてオールドで、時代を超えたダサさをまとったものがいい。
nvmを使って複数バージョン入れるのが得策だろう。
2.nvmを使って特定nodeをインストール
2-1.nvmの状態確認
まずは現状確認。
nvm --version
0.40.1
まぁまぁ、これはこれで、このバージョンがいいだろう。
nvm と node_modules は、新しければ新しいほどいいのだ。
ところで、今回使いたい「14.18.1」は、nvmで管理されているのだろうか?
nvm list
v22.13.0
-> v22.13.1
system
default -> lts (-> N/A)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v22.13.1) (default)
stable -> 22.13 (-> v22.13.1) (default)
lts/* -> lts/jod (-> v22.13.1)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.3 (-> N/A)
lts/gallium -> v16.20.2 (-> N/A)
lts/hydrogen -> v18.20.6 (-> N/A)
lts/iron -> v20.18.2 (-> N/A)
lts/jod -> v22.13.1
目的のバージョンが入っていない。
まぁそうだろう。
骨董品でレガシーなバージョンだからこそ入れるのだ。
よし、いれるぜ。
2-2.nvmで目的のバージョンインストール
「えい!」
と、勢いのまま叩く。
nvm install 14.18.1
Downloading and installing node v14.18.1...
Downloading https://nodejs.org/dist/v14.18.1/node-v14.18.1-darwin-arm64.tar.xz...
curl: (56) The requested URL returned error: 404
download from https://nodejs.org/dist/v14.18.1/node-v14.18.1-darwin-arm64.tar.xz failed
grep: /Users/mac-user/.nvm/.cache/bin/node-v14.18.1-darwin-arm64/node-v14.18.1-darwin-arm64.tar.xz: No such file or directory
Provided file to checksum does not exist.
Binary download failed, trying source.
Clang v3.5+ detected! CC or CXX not specified, will use Clang as C/C++ compiler!
Local cache found: ${NVM_DIR}/.cache/src/node-v14.18.1/node-v14.18.1.tar.xz
Checksums match! Using existing downloaded archive ${NVM_DIR}/.cache/src/node-v14.18.1/node-v14.18.1.tar.xz
$>./configure --prefix=/Users/mac-user/.nvm/versions/node/v14.18.1 <
Node.js configure: Found Python 3.11.11...
Please use python3.9 or python3.8 or python3.7 or python3.6 or python3.5 or python2.7.
nvm: install v14.18.1 failed!
おっと。
python 3.11.xではダメらしい。
python3.9を入れなければならない。
失われたイニシエの技術を使うために、過去に戻るのだ。
でも当然・・・
2-3.Pythonのバージョンをプロジェクトごとに切り替えたい
ので、
手っ取り早く、pyenvを使うのがいいよね。
pyenvで現在のバージョンを調べる。
pyenv versions
system
3.11.4
* 3.11.11 (set by /Users/mac-user/.pyenv/version)
当たり前だけと、3.11.11になってる。
3.9系を入れるよ。
「えい!」
pyenv install 3.9.21
pyenv versions
system
3.9.21
3.11.4
* 3.11.11 (set by /Users/mac-user/.pyenv/version)
よし。
次に特定ディレクトリだけ「3.9.21」を使うようにするため仮想環境作る。
cd /path/to/project
pyenv local 3.9.21
python --version
Python 3.9.21
よし!OKだ!
2-4.改めてnvmで目的のバージョンインストール
では、気を取り直して「14.18.1」をインストールしよう。
nvm install 14.18.1
nvm install 14.18.1
Downloading and installing node v14.18.1...
Downloading https://nodejs.org/dist/v14.18.1/node-v14.18.1-darwin-arm64.tar.xz...
curl: (56) The requested URL returned error: 404
download from https://nodejs.org/dist/v14.18.1/node-v14.18.1-darwin-arm64.tar.xz failed
grep: /Users/mac-user/.nvm/.cache/bin/node-v14.18.1-darwin-arm64/node-v14.18.1-darwin-arm64.tar.xz: No such file or directory
Provided file to checksum does not exist.
Binary download failed, trying source.
Detected that you have 10 CPU core(s)
Running with 9 threads to speed up the build
Clang v3.5+ detected! CC or CXX not specified, will use Clang as C/C++ compiler!
Local cache found: ${NVM_DIR}/.cache/src/node-v14.18.1/node-v14.18.1.tar.xz
Checksums match! Using existing downloaded archive ${NVM_DIR}/.cache/src/node-v14.18.1/node-v14.18.1.tar.xz
$>./configure --prefix=/Users/mac-user/.nvm/versions/node/v14.18.1 <
pyenv: python3.9: command not found
The `python3.9' command exists in these Python versions:
3.9.21
Note: See 'pyenv help global' for tips on allowing both
python2 and python3 to be found.
nvm: install v14.18.1 failed!
「だめじゃん!」
まじで大声で叫んでしまった。
「なんだよ、これ、いったいどういうことだよ。
わっけわかんねーよ!」
遥か太古大昔の失われたバージョンだからといって
ちょっとハードル高すぎない?
2-5.わっけわからないので、頭の中を整理する
特定プロジェクトでのみnode 14.18.1 を使いたいので、下記の通り処理を行った。
エラーが出てわけわからんから、ChatGPTちゃん、助けてちょーーー。
以下情報だよ。
pyenv install 3.9.21
cd /path/to/project
pyenv local 3.9.21
nvm install 14.18.1
Downloading and installing node v14.18.1...
Downloading https://nodejs.org/dist/v14.18.1/node-v14.18.1-darwin-arm64.tar.xz...
curl: (56) The requested URL returned error: 404
download from https://nodejs.org/dist/v14.18.1/node-v14.18.1-darwin-arm64.tar.xz failed
grep: /Users/mac-user/.nvm/.cache/bin/node-v14.18.1-darwin-arm64/node-v14.18.1-darwin-arm64.tar.xz: No such file or directory
Provided file to checksum does not exist.
Binary download failed, trying source.
Detected that you have 10 CPU core(s)
Running with 9 threads to speed up the build
Clang v3.5+ detected! CC or CXX not specified, will use Clang as C/C++ compiler!
Local cache found: ${NVM_DIR}/.cache/src/node-v14.18.1/node-v14.18.1.tar.xz
Checksums match! Using existing downloaded archive ${NVM_DIR}/.cache/src/node-v14.18.1/node-v14.18.1.tar.xz
$>./configure --prefix=/Users/mac-user/.nvm/versions/node/v14.18.1 <
pyenv: python3.9: command not found
The `python3.9' command exists in these Python versions:
3.9.21
Note: See 'pyenv help global' for tips on allowing both
python2 and python3 to be found.
nvm: install v14.18.1 failed!
このエラーは 「nvm が Apple Silicon (Arm64) 向けの Node v14.18.1 のバイナリを取得できず、ソースコードからビルドしようとしたところ、ビルドに必要な Python(python3.9)コマンドが見つからない」 ために発生しています。
エラーメッセージに pyenv: python3.9: command not found
とあるように、pyenv で 3.9.21 をインストールしても、実際に python3.9
が呼び出せていない状態です。
Rosetta2 (x86_64) シェル で nvm install 14.18.1
し、x86_64 バイナリをインストールするのが一番確実です。
まじか。
2-6.言われるがままにロゼッタ入れるぜ
もう為す術もなく、言われるがままに・・・。
softwareupdate --install-rosetta
I have read and agree to the terms of the software license agreement. A list of Apple SLAs may be found here: https://www.apple.com/legal/sla/
Type A and press return to agree: A
2025-01-23 19:47:52.978 softwareupdate[19627:1962387] Package Authoring Error: 072-44352: Package reference com.apple.pkg.RosettaUpdateAuto is missing installKBytes attribute
Install of Rosetta 2 finished successfully
入った。
2-7.三度目の正直!nvmで目的のバージョンインストール
もう、どうとでもなれ。
arch -x86_64 zsh
nvm install 14.18.1
Downloading and installing node v14.18.1...
Downloading https://nodejs.org/dist/v14.18.1/node-v14.18.1-darwin-x64.tar.xz...
##################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v14.18.1 (npm v6.14.15)
入った!
3.特定バージョンでビルド!
3-1.目的のバージョンが入ってるか再度確認
一応、再度確認だ。
nvm current
v14.18.1
nvm list
-> v14.18.1
v22.13.0
v22.13.1
system
default -> lts (-> N/A)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v22.13.1) (default)
stable -> 22.13 (-> v22.13.1) (default)
lts/* -> lts/jod (-> v22.13.1)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.21.3 (-> N/A)
lts/gallium -> v16.20.2 (-> N/A)
lts/hydrogen -> v18.20.6 (-> N/A)
lts/iron -> v20.18.2 (-> N/A)
lts/jod -> v22.13.1
よし!
当たり前だがv14.18.1になっている。
でも、あくまで標準は22.13.1にしたい。
なのでこれは叩いとく。
nvm alias default 22.13.1
3-2.目的バージョンでビルド
nvm use 14.18.1
npm i
npm run build
できた!!!
長い道のりだった。
(fin)