0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

brew upgrade / "Error: Permission denied @ apply2files..." の対処法

Last updated at Posted at 2021-11-17

環境

  • macOS Montery
  • Homebrew 3.3.4

背景

久々にbrew upgradeした際に、Error: Permission denied @ apply2files...が発生したので、その対処法を備忘録として記す。

terminal
$ brew upgrade
==> Upgrading X outdated packages:
:
:
==> Upgrading node
:
:
Error: Permission denied @ apply2files - /usr/local/share/systemtap/tapset/node.stp

対処法

まずは問題のファイルの権限を確認。

terminal
$ cd /usr/local/share/systemtap/tapset/node.stp
$ ls -l
total 0
drwxr-xr-x  X root       wheel  XX XX XX XX:XX .
drwxr-xr-x  X root       wheel  XX XX XX XX:XX ..
lrwxr-xr-x  X user_name  wheel  XX XX XX XX:XX node.stp -> ../../../Cellar/node/XX.X.X/share/systemtap/tapset/node.stp

問題のファイルnode.stpの所有グループwheelに属しているユーザーを確認。

terminal
$ dscl . -read /Groups/wheel
AppleMetaNodeLocation: /Local/Default
GeneratedUID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
GroupMembers: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
GroupMembership: root
Password: *
PrimaryGroupID: 0
RealName:
 System Group
RecordName: wheel
RecordType: dsRecTypeStandard:Groups

もしくは

terminal
$ dscacheutil -q group -a name wheel
name: wheel
password: *
gid: 0
users: root

これで、brew upgradeを実行したユーザーがwheelに属していないことが今回のエラーの原因と判明。

ここで、rootユーザでbrew upgradeを実行したくなるが、他のファイルも含めて権限がおかしなことになるため、Homebrewとしては推奨されていない。却下。

そして、chownで所有グループを変更することも、権限がおかしなことになるのでおすすめしない。

今回は、wheelグループにbrew upgradeを実行したいユーザーを追加することで対応することとした。

※ 個人用PCなら自身を追加すればよいので気にすることはないが、共有PCなら誰を追加するか注意が必要。

terminal
$ sudo dscl . -append /Groups/wheel GroupMembership user_name

wheelグループにuser_nameが追加されたことを確認。

terminal
$ dscl . -read /Groups/wheel
AppleMetaNodeLocation: /Local/Default
GeneratedUID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
GroupMembers: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
GroupMembership: root user_name
Password: *
PrimaryGroupID: 0
RealName:
 System Group
RecordName: wheel
RecordType: dsRecTypeStandard:Groups

もしくは

terminal
$ dscacheutil -q group -a name wheel
name: wheel
password: *
gid: 0
users: root user_name

追加できたので、brew upgradeを実行。

terminal
$ brew upgrade

エラーもなくなり、更新完了。めでたしめでたし。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?