はじめに
Mac に Node.js を入れた時、Homebrew の導入をめんどくさがって、macOS インストーラー(.pkg)で入れました。
最新の Git を入れる必要が出てきて、どうせならと Node.js も brew で管理することにしました。
ところが公式からアンインストーラーが提供されてなくて苦労したので記録を残します。
pkg 版かどうか確認する方法
node の場所を確認
which node
/usr/local/bin/node にある場合、pkg 版の可能性が高い。
pkg レシートを確認
pkgutil --pkgs | grep node
org.nodejs.node.pkg が出れば pkg 版。
削除手順
1. レシートを削除
macOS の pkg インストーラーは「レシート」というインストール記録を /private/var/db/receipts に残すので、これも削除します。
sudo rm -f /private/var/db/receipts/org.nodejs.node.*
sudo rm -f /private/var/db/receipts/org.nodejs.npm.*
2. 実行ファイルを削除
sudo rm -f /usr/local/bin/corepack
sudo rm -f /usr/local/bin/node
sudo rm -f /usr/local/bin/npm
sudo rm -f /usr/local/bin/npx
3. インクルードヘッダを削除
sudo rm -rf /usr/local/include/node
4. ライブラリを削除
sudo rm -rf /usr/local/lib/node_modules
5. doc を削除
sudo rm -rf /usr/local/share/doc/node
6. man を削除
sudo rm -f /usr/local/share/man/man1/node.1
リンク切れのエイリアスを削除
sudo find /usr/local/share/man -type l ! -exec test -e {} \; -delete
注:man の大半が /usr/local/lib/node_modules/npm/man へのエイリアスでした
man データベース更新
sudo /usr/libexec/makewhatis
7. コマンド履歴を削除
rm -f ~/.node_repl_history
8. キャッシュを削除
sudo rm -rf ~/.npm
削除確認
which node
which npm
node -v
npm -v
いずれも「not found」になれば OK。
おわりに
食わず嫌いは技術的負債になると教訓になりました。(結果的に詳しくなりましたがw)
Xcode Command Line Tools に付属の Apple git で満足していましたが、config-based hooks を使いたくなり、一念発起しました。
記事中に誤りがありましたらコメント頂けますようよろしくお願いします。