不信に思って「Node.js Mac アンインストール」等のワードで検索したら確かに
英語版スタフロを源流とするコードの一連の流れが出てきました。
bash
1lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom \
2| while read i; do
3 sudo rm /usr/local/${i}
4done
5sudo rm -rf /usr/local/lib/node \
6 /usr/local/lib/node_modules \
7 /var/db/receipts/org.nodejs.*
answered Feb 15 '12 at 2:58
おいおい、2012年2月15日の回答やぞ……
while
以下はsudo rm /usr/local/「パス」
という
ファイルを問答無用で削除するという戻れないことやってるわけですから
失敗したりOSの根幹で必要なファイルを消してたらヤバいですね☆
下手するとそのMacbookは起動もしない単なるゴミになって
Appleサポートに通って修理(ストレージの中身全て消去してクリーンインストール)になる可能性すらあります。
ブログ記事の人達は注意喚起するべきですね。
鵜呑みにして即実行とかダメ。絶対。
仮に実行するとして一旦下記のコマンドで何がされるか確認しましょう。
bash
1# そんな名前のファイルはあるのかい?
2$ ls /var/db/receipts/ | grep node
3
4# そのファイルが存在するとして、何が書かれているんだい?
5$ lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom
そもそもlsbom
ってなんなんだい?
https://ss64.com/osx/lsbom.html
List the contents of an installer's bom (bill of materials) file. This can be used to find out what files an installer will add/replace in your system before running it. It can also list details of a previous install.
和訳: インストーラーのbom(部品表)ファイルの内容を一覧表示します。これを使用して、インストーラーを実行する前に、インストーラーがシステムに追加/置換するファイルを見つけることができます。以前のインストールの詳細を一覧表示することもできます。
lsbomファイルは部品表であり
pkgのインストーラーでインストールを行ったら
何のファイルを追加・置換したかを記憶する事になる。
それを/var/db/receipts/org.nodejs.pkg.bom
みたいなファイルに固めておいたよ。
だからそいつらをsudo rm
コマンドに投げ込めば綺麗にアンインストール出来るよ。
こういう話の流れですね。
追加はさておき「置換」ってなんだよ怖すぎるでしょ。
まぁいいや。一度確認さえしておけば大事故にはならないでしょうし。
続いて検索結果を辿ると下記のような記事を発見しました。
pkgで導入したNode.jsをアンインストールする - HACKnote
一行目、org.nodejs.pkg.bom
はorg.nodejs.node.pkg.bom
に改名されている
ここに来て新情報です。
質問者さんの実行していた1行目のコマンドのファイル
/var/db/receipts/org.nodejs.pkg.bom
は存在しません。
つまり何も削除出来てないわけですね。
因みにこの記事ですらも2017年と古いので、
本当に存在するのか、ちゃんと確認した方が良いですね。
実際に確認してみました。
私はNode.jsをこれで使っているわけではないので、
Zoomを対象にしてみます。
bash
1$ ls /var/db/receipts/ | grep zoom
2us.zoom.pkg.videmeeting.bom
3us.zoom.pkg.videmeeting.plist
4us.zoom.pkg.videomeeting.bom
5us.zoom.pkg.videomeeting.plist
6
7$ lsbom -f -l -s -pf /var/db/receipts/us.zoom.pkg.videmeeting.bom
8./zoom.us.app/Contents/Resources/pt.PT.lproj/InfoPlist.strings
9#こういうのがうん百行
なるほど、こういう形式ならrm
コマンドにぶち込んでも大した問題にはならなさそうですね。
……で、この./
のファイルは/usr/local/lib
の中にあるんか?
macOSは大規模アップデート「Catalina」で
/usr
以下の書き込みに相当制限を行うような改修を施しています。
当時、Homebrewやgcc等が動かなくなって阿鼻叫喚だった記憶があります。
試しに/usr/local/lib/zoom...略
を探したらそんなディレクトリは存在しないですね。
Node.js系のファイルも同様に存在しないでしょう。
んで、どこにあるんだい?と探したら、
ls /Applications/zoom.us.com/Contents/Resources/pt.PT.lproj
みたいな感じでディレクトリが見つかり、
該当のInfoPlist.strings
に辿り着く事ができました。
紆余曲折しましたが、最終的にはこんな感じになるかと思います。
bash
1npm uninstall -g npm
2lsbom -f -l -s -pf /var/db/receipts/org.nodejs.node.pkg.bom \
3| while read i; do
4 sudo rm /Applications/${i}
5done
6sudo rm -rf /usr/local/bin/node \ # 質問文から推測するにこれを削除だね
7 /usr/local/bin/node_modules \ # node_modulesもbinに移動しているのでは?
8 /var/db/receipts/org.nodejs.*
何度も言いますが、何が削除されるのか確認するようにしてください。
そしてsudo rm
コマンドでそのMacbookの何処にファイルを入れたのかを示す
org.nodejs.node.pkg.bom
が消し飛ぶので
各ファイルを削除し損ねるとストレージ内に永久にゴミが溜まります。
この辺を理解して確認しながら作業をすすめてください。