はじめに
以下のコマンドを実行した際、エラーが出て完了できませんでした。
$ 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
が走るようです。
https://brew.sh/2019/02/02/homebrew-2.0.0/
brew cleanup
is run periodically (every 30 days) and triggers for individual formula cleanup on reinstall, install or upgrade.
で、そこでパーミッションの問題で弾かれているようですね。
対処法
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 で /usr/local/lib/ 配下のパーミッションエラーが出る場合の対処法」への1件のフィードバック