HighLab

M1搭載のmacbookproでnodebrewを導入

  • 公開日:
  • 更新日:
  • 文字数:2125文字


M1搭載のmacbookproを買って環境構築をしてると、 Nodebrewでv12、v9のバージョンを使用したいがバージョン16しかダウンロードできなかった。

以下のようなエラーになってしまう。

Can not fetch: https://nodejs.org/dist/v12.18.3/node-v12.18.3-darwin-arm64.tar.gz

前提として、ネイティブ環境(arm64)に対応してないバージョンなので、 Rosetta2を使用してIntel環境(x86_64)で構築し、Itel環境からnodebrewをインストールします。

前提・環境 MacBook Pro (13-inch, M1, 2020) バージョン11.1 ターミナルはiterm2を使用します。(デフォルトのターミナルでも問題なし) Homebrew インストール済み

目標 M1搭載のMacから、homebrew経由でnodebrewをインストールし、 Arm64に対応してないNode.jsのバージョンをインストールしてくる。

Rosettaの設定 アプリケーションからIterm2(ターミナル)のアイコンを右クリックし情報を見るをクリック。 ”Rosettaを使用して開く”のチェックマークにチェックを入れてからIterm2(ターミナル)を起動します。

Intel版Homebrewをインストール

function x() {
    console.log(x);
}
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

ネイティブ環境とIntel環境の切り替え


typeset -U path PATH
path=(
    /opt/homebrew/bin(N-/)
    /usr/local/bin(N-/)
    $path
)

if (( $+commands[sw_vers] )) && (( $+commands[arch] )); then
    [[ -x /usr/local/bin/brew ]] && alias brew="arch -arch x86_64 /usr/local/bin/brew"
    alias x64='exec arch -x86_64 /bin/zsh'
    alias a64='exec arch -arm64e /bin/zsh'
    switch-arch() {
        if  [[ "$(uname -m)" == arm64 ]]; then
            arch=x86_64
        elif [[ "$(uname -m)" == x86_64 ]]; then
            arch=arm64e
        fi
        exec arch -arch $arch /bin/zsh
    }
fi

setopt magic_equal_subst

source ~/.zshrc

uname -m arm-64 arm-64になってます。

ネイティブ環境の場合 arm-64 Intel環境の場合 x86_64

switch-arch switch-archで切り替えが行えます。

gccのダウンロード

gccとは、GCCとは、GNUプロジェクトが開発および配布している、さまざまなプログラミング言語のコンパイラ集のことである。

switch-archでネイティブ環境にします。 u-name -mでarm-64になっていることを確認

brew install gcc gcc -v gcc -vでインストールされていることを確認

Nodebrewをインストール switch-arch でx86_64に切り替える brew install nodebrew

~/.zshrc export PATH=$HOME/.nodebrew/current/bin:$PATH

source ~/.zshrc

セットアップ。これやらないとインストールできない。 nodebrew setup

nodebrew install-binary v12.18.2

v12.18.2の箇所で対象のバージョンを入力 インストール可能なバージョンを確認したい場合は nodebrew ls-remote nodebrew ls-remoteで確認します。

参考文献 gccっていったいなんなんだ M1 Mac での環境構築の最適解 ArmのMacでiTerm2の設定 NodebrewでNodeをインストールする