[Mac][Homebrew] brew reinstall XXX で /usr/local/lib/node_modules/npm/node_modules/.bin/ のパーミッションエラーが出る場合の対処法

はじめに

以下のコマンドを実行した際、エラーが出て完了できませんでした。

$ brew reinstall carthage
中略
==> `brew cleanup` has not been run in 30 days, running now...
Error: Permission denied @ apply2files - /usr/local/lib/node_modules/npm/node_modules/.bin/JSONStream

これの対処法をまとめます

前提条件

Mac: macOS Catalina 10.15.6

何が起こっているのか

ターミナルを見ると、brew cleanup をしようとして失敗しているようです。

`brew cleanup` has not been run in 30 days, running now...

brew reinstall, brew install, brew upgrade を実行すると自動で brew cleanup が走るようです。

brew cleanup is run periodically (every 30 days) and triggers for individual formula cleanup on reinstall, install or upgrade. 

https://brew.sh/2019/02/02/homebrew-2.0.0/

で、そこでパーミッションの問題で弾かれているようですね。

対処法

Stack Overflow に対処法がありました

以下のコマンドを実行します。

sudo chown -R ${LOGNAME}:staff /usr/local/lib/node_modules

/usr/local/lib/node_modules とその配下のファイルやディレクトリの所有権を
再帰的に<アカウント名>:staff に変更するコマンドです。

補足1. staff グループとは

「staff グループ」を初めて知ったんですが、
PCの管理者以外の触る人、という位置付けのグループのようです。

そもそもグループとはどういうものかあまりイメージできなかったので、
調べて本ブログの [Mac] UNIX のユーザとグループの世界観 にまとめました。

補足2. staff でよかったのか

Stack Overflow の一つ下の回答 には少し別のコマンドが書かれていました。

sudo chown -R $(whoami):admin /usr/local/* \
&& sudo chmod -R g+rwx /usr/local/*

/usr/local/ 配下の所有権や権限を全て変更するコマンドで、
個人的にちょっと怖かったのでこちらのコマンドは採用しませんでした。

が、こちらの回答の方が支持されているようですし、
Qiita などで様子を見る限りこちらでも問題はなさそうです。

むしろサーバなど共有PCで作業する場合は staff より admin の方がよいかもしれませんね🤔

試していませんが staff を admin に読み替えたコマンドを試してみるのもいいかもしれません。

$ sudo chown -R ${LOGNAME}:admin /usr/local/lib/node_modules

brew cleanup 成功

さて、前述のコマンドを打って改めて brew cleanup すると、成功しました!🙌

$ brew cleanup
略
Pruned 19 symbolic links and 318 directories from /usr/local

更に carthage を reinstall してみます。

$ brew reinstall carthage
略
==> Summary
🍺  /usr/local/Cellar/carthage/0.37.0: 8 files, 7.7MB

成功しました🍺

最後に

以上です。

Carthage は本当は0.37.0 ではなく 0.38.0 を入れたかったんですが、Homebrew の何かが古いのかな?
次回はupdate, upgrade まわりについてまとめようと思います。

お疲れ様でした!

[Mac][Homebrew] brew reinstall XXX で /usr/local/lib/node_modules/npm/node_modules/.bin/ のパーミッションエラーが出る場合の対処法」への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。