1台のMacに古いNode.jsがインストールされていて、適当にアップグレードしたところ、npmの実行時にエラーが出まくっておかしくなってしまったので、きれいにしてから再インストールすることにした。
古いNode.jsとnpmの削除は実行済み。
せっかくなので下記の情報を参考に、Homebrewというものからきちんとインストールしてみようと思う。
https://qiita.com/kyosuke5_20/items/c5f68fc9d89b84c0df09
Homebrewとは
HomebrewはMac用のパッケージマネージャで、Node.jsに限らず、アプリやフォントのインストールとか諸々を管理してくれるらしい。
Homebrewをインストール
よく分からないが、ターミナルで以下のコードをたたいてインストールしてみる。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
こんな感じで出た。(アカウント名は伏せ字)
==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew
==> The following existing directories will be made group writable:
/usr/local/include
/usr/local/lib
==> The following existing directories will have their owner set to ******:
/usr/local/include
/usr/local/lib
==> The following existing directories will have their group set to admin:
/usr/local/include
/usr/local/lib
==> The following new directories will be created:
/usr/local/etc
/usr/local/sbin
/usr/local/var
/usr/local/opt
/usr/local/share/zsh
/usr/local/share/zsh/site-functions
/usr/local/var/homebrew
/usr/local/var/homebrew/linked
/usr/local/Cellar
/usr/local/Caskroom
/usr/local/Homebrew
/usr/local/Frameworks
Press RETURN to continue or any other key to abort
問題なさそうなのでRETURN。
==> /usr/bin/sudo /bin/chmod u+rwx /usr/local/include /usr/local/lib
Password:
==> /usr/bin/sudo /bin/chmod g+rwx /usr/local/include /usr/local/lib
==> /usr/bin/sudo /usr/sbin/chown nanaow /usr/local/include /usr/local/lib
==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local/include /usr/local/lib
==> /usr/bin/sudo /bin/mkdir -p /usr/local/etc /usr/local/sbin /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /bin/chmod g+rwx /usr/local/etc /usr/local/sbin /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /bin/chmod 755 /usr/local/share/zsh /usr/local/share/zsh/site-functions
==> /usr/bin/sudo /usr/sbin/chown nanaow /usr/local/etc /usr/local/sbin /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local/etc /usr/local/sbin /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /bin/mkdir -p /Users/nanaow/Library/Caches/Homebrew
==> /usr/bin/sudo /bin/chmod g+rwx /Users/nanaow/Library/Caches/Homebrew
==> /usr/bin/sudo /usr/sbin/chown nanaow /Users/nanaow/Library/Caches/Homebrew
You have not agreed to the Xcode license.
Before running the installer again please agree to the license by opening
Xcode.app or running:
sudo xcodebuild -license
インストールするにはXcode.appを開いてライセンスに同意する必要があるらしい。
Xcode.appを開いたら何やら同意を求められたのでAgreeしたらインストールが始まった。
インストールは終わったものの何ごとも起こらないので、最初のコードをもう一度タイプしてみると、こんどはHomebrewのインストールが始まった。
==> Downloading and installing Homebrew...
remote: Enumerating objects: 126028, done.
remote: Total 126028 (delta 0), reused 0 (delta 0), pack-reused 126028
Receiving objects: 100% (126028/126028), 29.93 MiB | 10.85 MiB/s, done.
Resolving deltas: 100% (92377/92377), done.
From https://github.com/Homebrew/brew
* [new branch] master -> origin/master
* [new tag] 0.1 -> 0.1
* [new tag] 0.2 -> 0.2
* [new tag] 0.3 -> 0.3
* [new tag] 0.4 -> 0.4
* [new tag] 0.5 -> 0.5
* [new tag] 0.6 -> 0.6
* [new tag] 0.7 -> 0.7
* [new tag] 0.7.1 -> 0.7.1
* [new tag] 0.8 -> 0.8
* [new tag] 0.8.1 -> 0.8.1
* [new tag] 0.9 -> 0.9
* [new tag] 0.9.1 -> 0.9.1
* [new tag] 0.9.2 -> 0.9.2
* [new tag] 0.9.3 -> 0.9.3
* [new tag] 0.9.4 -> 0.9.4
* [new tag] 0.9.5 -> 0.9.5
* [new tag] 0.9.8 -> 0.9.8
* [new tag] 0.9.9 -> 0.9.9
* [new tag] 1.0.0 -> 1.0.0
* [new tag] 1.0.1 -> 1.0.1
* [new tag] 1.0.2 -> 1.0.2
* [new tag] 1.0.3 -> 1.0.3
* [new tag] 1.0.4 -> 1.0.4
* [new tag] 1.0.5 -> 1.0.5
* [new tag] 1.0.6 -> 1.0.6
* [new tag] 1.0.7 -> 1.0.7
* [new tag] 1.0.8 -> 1.0.8
* [new tag] 1.0.9 -> 1.0.9
* [new tag] 1.1.0 -> 1.1.0
* [new tag] 1.1.1 -> 1.1.1
* [new tag] 1.1.10 -> 1.1.10
* [new tag] 1.1.11 -> 1.1.11
* [new tag] 1.1.12 -> 1.1.12
* [new tag] 1.1.13 -> 1.1.13
* [new tag] 1.1.2 -> 1.1.2
* [new tag] 1.1.3 -> 1.1.3
* [new tag] 1.1.4 -> 1.1.4
* [new tag] 1.1.5 -> 1.1.5
* [new tag] 1.1.6 -> 1.1.6
* [new tag] 1.1.7 -> 1.1.7
* [new tag] 1.1.8 -> 1.1.8
* [new tag] 1.1.9 -> 1.1.9
* [new tag] 1.2.0 -> 1.2.0
* [new tag] 1.2.1 -> 1.2.1
* [new tag] 1.2.2 -> 1.2.2
* [new tag] 1.2.3 -> 1.2.3
* [new tag] 1.2.4 -> 1.2.4
* [new tag] 1.2.5 -> 1.2.5
* [new tag] 1.2.6 -> 1.2.6
* [new tag] 1.3.0 -> 1.3.0
* [new tag] 1.3.1 -> 1.3.1
* [new tag] 1.3.2 -> 1.3.2
* [new tag] 1.3.3 -> 1.3.3
* [new tag] 1.3.4 -> 1.3.4
* [new tag] 1.3.5 -> 1.3.5
* [new tag] 1.3.6 -> 1.3.6
* [new tag] 1.3.7 -> 1.3.7
* [new tag] 1.3.8 -> 1.3.8
* [new tag] 1.3.9 -> 1.3.9
* [new tag] 1.4.0 -> 1.4.0
* [new tag] 1.4.1 -> 1.4.1
* [new tag] 1.4.2 -> 1.4.2
* [new tag] 1.4.3 -> 1.4.3
* [new tag] 1.5.0 -> 1.5.0
* [new tag] 1.5.1 -> 1.5.1
* [new tag] 1.5.10 -> 1.5.10
* [new tag] 1.5.11 -> 1.5.11
* [new tag] 1.5.12 -> 1.5.12
* [new tag] 1.5.13 -> 1.5.13
* [new tag] 1.5.14 -> 1.5.14
* [new tag] 1.5.2 -> 1.5.2
* [new tag] 1.5.3 -> 1.5.3
* [new tag] 1.5.4 -> 1.5.4
* [new tag] 1.5.5 -> 1.5.5
* [new tag] 1.5.6 -> 1.5.6
* [new tag] 1.5.7 -> 1.5.7
* [new tag] 1.5.8 -> 1.5.8
* [new tag] 1.5.9 -> 1.5.9
* [new tag] 1.6.0 -> 1.6.0
* [new tag] 1.6.1 -> 1.6.1
* [new tag] 1.6.10 -> 1.6.10
* [new tag] 1.6.11 -> 1.6.11
* [new tag] 1.6.12 -> 1.6.12
* [new tag] 1.6.13 -> 1.6.13
* [new tag] 1.6.14 -> 1.6.14
* [new tag] 1.6.15 -> 1.6.15
* [new tag] 1.6.16 -> 1.6.16
* [new tag] 1.6.17 -> 1.6.17
* [new tag] 1.6.2 -> 1.6.2
* [new tag] 1.6.3 -> 1.6.3
* [new tag] 1.6.4 -> 1.6.4
* [new tag] 1.6.5 -> 1.6.5
* [new tag] 1.6.6 -> 1.6.6
* [new tag] 1.6.7 -> 1.6.7
* [new tag] 1.6.8 -> 1.6.8
* [new tag] 1.6.9 -> 1.6.9
* [new tag] 1.7.0 -> 1.7.0
* [new tag] 1.7.1 -> 1.7.1
* [new tag] 1.7.2 -> 1.7.2
* [new tag] 1.7.3 -> 1.7.3
* [new tag] 1.7.4 -> 1.7.4
* [new tag] 1.7.5 -> 1.7.5
* [new tag] 1.7.6 -> 1.7.6
* [new tag] 1.7.7 -> 1.7.7
* [new tag] 1.8.0 -> 1.8.0
* [new tag] 1.8.1 -> 1.8.1
* [new tag] 1.8.2 -> 1.8.2
* [new tag] 1.8.3 -> 1.8.3
* [new tag] 1.8.4 -> 1.8.4
* [new tag] 1.8.5 -> 1.8.5
* [new tag] 1.8.6 -> 1.8.6
* [new tag] 1.9.0 -> 1.9.0
* [new tag] 1.9.1 -> 1.9.1
* [new tag] 1.9.2 -> 1.9.2
* [new tag] 1.9.3 -> 1.9.3
* [new tag] 2.0.0 -> 2.0.0
* [new tag] 2.0.1 -> 2.0.1
* [new tag] 2.0.2 -> 2.0.2
* [new tag] 2.0.3 -> 2.0.3
* [new tag] 2.0.4 -> 2.0.4
* [new tag] 2.0.5 -> 2.0.5
* [new tag] 2.0.6 -> 2.0.6
* [new tag] 2.1.0 -> 2.1.0
* [new tag] 2.1.1 -> 2.1.1
* [new tag] 2.1.10 -> 2.1.10
* [new tag] 2.1.11 -> 2.1.11
* [new tag] 2.1.2 -> 2.1.2
* [new tag] 2.1.3 -> 2.1.3
* [new tag] 2.1.4 -> 2.1.4
* [new tag] 2.1.5 -> 2.1.5
* [new tag] 2.1.6 -> 2.1.6
* [new tag] 2.1.7 -> 2.1.7
* [new tag] 2.1.8 -> 2.1.8
* [new tag] 2.1.9 -> 2.1.9
HEAD is now at 5356ebb20 Merge pull request #6466 from Homebrew/dependabot/bundler/docs/github-pages-200
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
https://github.com/Homebrew/brew#donations
==> Tapping homebrew/core
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core'...
remote: Enumerating objects: 5038, done.
remote: Counting objects: 100% (5038/5038), done.
remote: Compressing objects: 100% (4839/4839), done.
remote: Total 5038 (delta 48), reused 582 (delta 9), pack-reused 0
Receiving objects: 100% (5038/5038), 4.02 MiB | 4.81 MiB/s, done.
Resolving deltas: 100% (48/48), done.
Tapped 2 commands and 4827 formulae (5,079 files, 12.5MB).
Already up-to-date.
==> Installation successful!
==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
https://docs.brew.sh/Analytics
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
https://github.com/Homebrew/brew#donations
==> Next steps:
- Run `brew help` to get started
- Further documentation:
https://docs.brew.sh
というわけで、Homebrewのインストールは無事完了。
nodebrewをインストール
nodebrewは、ローカルマシン内にインストールされたNode.jsのバージョン管理ができるツールで、入れておいたほうがいいらしい。
まずはターミナルで以下のコードをタイプ。
$ brew install nodebrew
すると、
Homebrew 2.1.11
Homebrew/homebrew-core (git revision 001b; last commit 2019-09-17)
**********************:~ ******$ brew install nodebrew
==> Downloading https://github.com/hokaccha/nodebrew/archive/v1.0.1.tar.gz
==> Downloading from https://codeload.github.com/hokaccha/nodebrew/tar.gz/v1.0.1
######################################################################## 100.0%
==> Caveats
You need to manually run setup_dirs to create directories required by nodebrew:
/usr/local/opt/nodebrew/bin/nodebrew setup_dirs
Add path:
export PATH=$HOME/.nodebrew/current/bin:$PATH
To use Homebrew's directories rather than ~/.nodebrew add to your profile:
export NODEBREW_ROOT=/usr/local/var/nodebrew
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
zsh completions have been installed to:
/usr/local/share/zsh/site-functions
==> Summary
🍺 /usr/local/Cellar/nodebrew/1.0.1: 8 files, 38.6KB, built in 4 seconds
となって、インストール完了。バージョン確認もできた。
Node.jsのインストール
さて、いよいよNode.jsのインストール。
インストール可能なNode.jsのバージョンは、以下のコードで確認できる。
$ nodebrew ls-remote
ずらっと出てきたが、最新版をインストールできればいいので、以下を実行。
$ nodebrew install-binary latest
失敗。
Fetching: https://nodejs.org/dist/v12.10.0/node-v12.10.0-darwin-x64.tar.gz
Warning: Failed to create the file
Warning: /Users/******/.nodebrew/src/v12.10.0/node-v12.10.0-darwin-x64.tar.gz:
Warning: No such file or directory
curl: (23) Failed writing body (0 != 1058)
download failed: https://nodejs.org/dist/v12.10.0/node-v12.10.0-darwin-x64.tar.gz
ユーザーディレクトリに/.nodebrew/src/ディレクトリがないので、作成してあげる。
$ mkdir -p ~/.nodebrew/src
再度インストールを試みる。
$ nodebrew install-binary latest
すると、
Fetching: https://nodejs.org/dist/v12.10.0/node-v12.10.0-darwin-x64.tar.gz
######################################################################## 100.0%
Installed successfully
インストールは成功。
以下のコードをたたいて確認する。
$ nodebrew ls
すると、インストールされているバージョンと、有効になっているバージョンが確認できる。
v12.10.0
current: none
「curren: none」は有効になっているバージョンがないということなので、有効化をする。
$ nodebrew use v12.10.0
もう一度確認すると、
v12.10.0
current: v12.10.0
v12.10.0が有効化された。
環境パスを通す
これだけではまだNode.jsを使うことはできず、「環境パスを通す」という操作が必要らしい。
nodeコマンドのありかを記憶させて、nodeコマンドが使えるようにするということらしい。
書かれていた通り、以下のコマンドを実行。
$ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bash_profile
確かに、.bash_profileというファイルが生成され、パスが記述されている。
ターミナルを再起動して、nodeコマンドを試してみる。
$ node -v
すると、
v12.10.0
出た!
インストール完了!