새소식

기타

기타 - compinit:480: compdump: function definition file not found 에러 해결(feat. m4 에어 마이그레이션)

  • -

사랑스러운 우리 맥부기맥북맥북어맥북스딱스맥부르크맥부가우가

개요

드디어 맥북을 업그레이드 했다. 오랜 기간 동고동락한 m1 에어를 보내주고 m4 에어를 질러버렸다.
기분좋게 마이그레이션까지 마치고 VScode에서 터미널을 열었는데 갑자기 아래와 같은 에러가 출력되기 시작했다.

compinit:480: compdump: function definition file not found
.zshrc:188: add-zsh-hook: function definition file not found

compinit 관련 에러

zsh에서 compinit은 자동 완성 기능을 초기화할 때 사용하는 함수인데, 뭔가 꼬였는지 함수 파일 자체를 못 찾는다고 에러가 발생했다.
그래서 .zshrc에 다음 스크립트를 추가해보았다

autoload -Uz compinit
compinit

autoload -U bashcompinit
bashcompinit

근데 이렇게 해도 여전히 같은 에러가 계속 발생.


Homebrew zsh 제거 시도

혹시 zsh가 이상하게 설치되어 있는 건가 싶어서 Homebrew로 설치된 zsh를 제거해보려 했다.

brew uninstall zsh

그런데 새로운 에러가 발생

Error: Permission denied @ rb_sysopen - /opt/homebrew/var/homebrew/locks/go.formula.lock

이번엔 brew가 내부 디렉터리 파일에 접근 권한이 없어서 에러가 발생하는 상황이었다.


원인 분석

해당 에러는 /opt/homebrew 아래에 있는 파일들이 admin 계정 소유로 되어 있어서 현재 사용자 권한으로는 접근이나 수정이 불가능한 상태였다.

ls -al /opt/homebrew 해보면 소유자가 admin으로 되어 있는 걸 확인할 수 있다.


해결 방법

권한 문제를 해결하기 위해 brew 설치 경로 전체의 소유자를 현재 사용자로 변경했다

sudo chown -R $(whoami) /opt/homebrew

이 명령을 실행한 후 brew uninstall zsh 명령도 잘 작동했고, .zshrc 관련 에러도 함께 사라졌다.


후기

다음에 비슷한 일이 생기면 brew 권한부터 의심해보자.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.