본문 바로가기

os/mac OS X

홈브루 brew upgrade 시 권한오류(Error: Permission denied) 해결방법

발생 상황


mac OS X 업데이트 후 홈브루 패키지 업그레이드 명령어를 실행할 때 권한 오류 발생

$ brew upgrade
==> Upgrading 10 outdated packages:
....
Pruned 0 symbolic links and 3 directories from /usr/local
Error: Permission denied @ apply2files - /usr/local/lib/node_modules/hexo-cli/node_modules/picomatch/lib/.DS_Store

원인


brew 경로인 /usr/local의 경로에 쓰기 권한이 없음.

시도1 - 루트권한으로 업그레이드 시도


그래서 브루 업그레이드를 root 권한으로 시도해봄

$ sudo brew upgrade
Password:
Error: Running Homebrew as root is extremely dangerous and no longer supported.
As Homebrew does not drop privileges on installation you would be giving all
build scripts full access to your system.

같은 생각을 하는 사람이 많은지ㅋㅋ 매우 위험하다고 더이상 지원하지 않는다고 합니다.
홈브루는 (아마도 패키지?) 설치할 때 권한을 떨구지 않아서 빌드 스크립트가 모든 시스템에 접근 가능해서 위험하다고 하네요.

시도2 - brew 경로 소유자 변경


mac OS X 업데이트 후 경로의 소유자가 root로 바꼈습니다. 업데이트 이전에는 제꺼였는데요.. 그래서 다시 제 계정으로 소유자를 바꿔줍니다.

$ brew --prefix
/usr/local

$ sudo chown -R $(whoami) /usr/local
chown: /usr/local: Operation not permitted

음 안되네요. 업데이트 후 해당 경로의 소유를 바꾸는 명령은 보안상의 이유로 막아놨나봅니다.
Github - Can't chown /usr/local in High Sierra

/usr/local can no longer be chown'd in High Sierra. Instead use

해결!


그럼 -R 리커시브 옵션으로 해당 경로 아래에 모든 파일의 소유를 바꿉니다. brew upgrade 잘 되네요.

$ sudo chown -R $(whoami) $(brew --prefix)/*