공식 스크립트로 Homebrew 제거하고 목록 남기기
Homebrew에는 공식 제거 스크립트가 있고, 설명한 대로 동작합니다. 진짜로 봐야 할 것은 범위입니다. Homebrew 자체와 Homebrew로 설치한 것을 함께 지우며, 이 두 사실의 무게는 지금 여기 온 이유에 따라 달라집니다.
디스크 공간만 필요하면 지우기 전에 Homebrew가 얼마나 쓰는지 확인하세요. 특정 formula만 문제라면 환경 전체를 지울 필요는 없습니다.
더 나아가기 전에 brew leaves와 cask 목록을 적어두세요. 그다음 공식 제거기를 --dry-run으로 실행하고, 출력을 삭제 계획처럼 읽으세요. 문제가 한 패키지라면 여기서 멈추고 brew uninstall을 쓰거나 더 안전한 Homebrew 정리 경로를 따르세요.
Homebrew를 제거하면 안 되는 경우
다음 중 하나라도 해당하면 핵옵션은 피하세요.
- formula나 cask 하나가 깨짐:
brew uninstall <name>을 쓰고, 의존성이 고아가 되면brew autoremove - 공간만 필요:
brew cleanup -s는 이전 버전과 다운로드를 지우며 접두사는 남김 - Homebrew에서 온
git,node,python, 데이터베이스 서버, CLI 도구가 아직 필요함. 제거기는 Cellar와 Caskroom도 가져감 - 같은 Mac에서 내일 같은 구성을 다시 설치할 예정. 아래 목록을 내보내고
brew cleanup으로 정리한 뒤 설치는 유지
제거가 맞는 때는 Homebrew를 완전히 떠날 때, 깨진 설치 뒤 깨끗한 접두사로 옮길 때, 더 이상 그 패키지가 필요 없는 기기를 비울 때입니다.
접두사 파악: Intel, Apple Silicon, Rosetta 잔여물
Homebrew 기본 접두사는 칩에 따라 달라집니다.
| Mac | 기본 접두사 | brew 바이너리 |
|---|---|---|
| Apple Silicon | /opt/homebrew |
/opt/homebrew/bin/brew |
| Intel | /usr/local |
/usr/local/bin/brew |
무엇을 지우기 전에 실제로 쓰는 것을 확인하세요.
uname -m
brew --prefix
which brew
arm64는 Apple Silicon입니다. x86_64는 Intel(또는 Rosetta 터미널)입니다. 이전한 Apple Silicon Mac에서는 /usr/local 아래 옛 Intel Homebrew가 /opt/homebrew와 함께 남아 있을 수 있습니다. 공식 제거 스크립트는 기기의 기본값을 찾고, arm64에서는 /usr/local도 살펴 남아 있는 Intel 접두사를 놓치지 않습니다. 두 접두사를 의도적으로 유지한다면 --path로 지울 쪽을 지정하세요.
Intel에서 /usr/local 전체를 손으로 지우지 마세요. 다른 소프트와도 공유됩니다. Homebrew 자체 트리만 다루는 공식 스크립트를 쓰세요.
공식 제거기
Homebrew FAQ는 Homebrew/install 저장소의 제거 스크립트를 가리킵니다. 명령이 바뀌면 그 페이지에서 복사하세요. 현재 한 줄 명령은 다음과 같습니다.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
실행 전에 스크립트를 읽으려면 먼저 다운로드하세요.
curl -O https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh
less uninstall.sh
/bin/bash uninstall.sh --help
유용한 플래그:
--dry-run(-n도 가능): 지울 내용만 출력하고 아무것도 바꾸지 않음. 중요한 기기에서는 여기서 시작--path=PATH: 특정 접두사 제거(예: Apple Silicon에 남은 Rosetta 시대/usr/local)--force: 확인 프롬프트 건너뜀(NONINTERACTIVE가 설정된 경우에도 암시적으로 적용)--skip-cache-and-logs: 캐시와 로그 디렉터리는 그대로 둠
옛 mxcl gist와 아직도 cd $(brew --prefix) 후 git ls-files로 지우라는 가이드는 무시하세요. 초기 /usr/local 레이아웃용이며 현재 설치에서는 위험합니다.
스크립트가 실제로 지우는 것
제거기는 Homebrew 접두사와 그 아래 bin, etc, include, lib, opt, sbin, share, var, Frameworks, 그리고 Cellar와 Caskroom을 지웁니다.
핵심은 마지막 둘입니다. Cellar에는 각 formula 파일이, Caskroom에는 cask 메타데이터가 있습니다. Homebrew를 지우면 함께 사라지므로 그걸로 설치한 명령줄 도구도 같이 없어집니다.
또한 ~/Library/Caches/Homebrew와 ~/Library/Logs/Homebrew, 시스템 수준 Homebrew 캐시, /etc/paths.d/homebrew, /Applications와 ~/Applications의 Homebrew 관리 앱도 정리합니다.
지우기 전에 설치 목록을 적어 두기
제거 전에 다음 두 명령으로 목록을 내보냅니다.
brew leaves > ~/Desktop/brew-formulae.txt
brew list --cask > ~/Desktop/brew-casks.txt
brew leaves는 다른 설치된 formula나 cask에 의존되지 않는 formula를 나열합니다. 유용한 출발점이지만, 명시적으로 설치한 전체 기록이 아닙니다. 환경을 다시 만들기 전에 두 파일을 검토하세요.
패키지 데이터와 패키지 파일은 따로 보세요. 홈 디렉터리 설정은 남을 수 있지만, /opt/homebrew/var 또는 /usr/local/var의 Postgres 데이터베이스는 아직 Homebrew 접두사 안입니다. 제거기는 var를 지우므로 그 데이터도 함께 갈 수 있습니다. 필요한 데이터는 접두사 밖으로 먼저 백업하세요. 서비스를 쓰면 먼저 중지합니다.
brew services list
brew services stop --all
선택: 먼저 formula와 cask 제거
한 번에 핵삭제 대신 단계적으로 해체하려면 brew가 아직 동작할 때 패키지를 먼저 지웁니다.
brew list --formula
brew uninstall --force $(brew list --formula)
brew list --cask
brew uninstall --cask --force $(brew list --cask)
brew autoremove
brew cleanup -s
이렇게 하면 Cellar와 Caskroom은 비지만 Homebrew 설치는 남습니다. var 아래 데이터가 불안할 때, 또는 패키지 공간만 비우고 나중에 더 작은 도구 세트를 위해 brew를 남기고 싶을 때 씁니다. Homebrew 자체를 끝낼 때는 공식 제거기로 접두사, tap, 캐시까지 깨끗이 지우세요.
제거 실행
--dry-run으로 실행하고 모든 경로를 읽습니다.--dry-run없이 실행하고, 물으면y를 입력하며, 보호된 디렉터리에sudo가 필요하면 macOS 암호를 입력합니다.- “possible Homebrew files were not deleted” 같은 목록이 나오면 창을 닫기 전에 복사합니다.
스크립트를 다운로드한 뒤 dry-run 예:
/bin/bash uninstall.sh --dry-run
원격 한 줄 명령을 쓸 때도 플래그를 넘기기 쉽게 먼저 다운로드한 다음 /bin/bash uninstall.sh를 실행하세요.
잔여 파일 점검 목록
스크립트가 끝나면 일부 Homebrew로 보이는 파일을 삭제하지 못했고 직접 지워야 할 수 있다고 알린 뒤 목록을 보여줄 수 있습니다.
그 경로가 이름으로 나오는 곳은 보통 여기뿐입니다. Homebrew가 만들지 않은 디렉터리 권한 때문인 경우가 많고 목록은 짧습니다. 이미 지워진 설치에서 다시 실행해도 다시 나오지 않으니, 터미널을 닫기 전에 복사해 두세요.
전형적인 잔여는 방금 지운 접두사 아래에 있습니다.
- Apple Silicon:
/opt/homebrew/etc,share,var,Frameworks및 비슷하게 비어 있거나 소유권이 어중간한 디렉터리 - Intel:
/usr/local아래 같은 이름. 무관한/usr/local트리는 추측으로 지우지 마세요
스크립트가 경로를 지목했고 Homebrew 전용임을 확인했다면 명시적으로 지웁니다(-rf 뒤에 공백):
sudo rm -rf /opt/homebrew/share
그다음 확인:
ls /opt/homebrew
ls /usr/local/Homebrew
ls ~/Library/Caches/Homebrew
ls ~/Library/Logs/Homebrew
위치가 사라지면 “No such file or directory”가 나와야 합니다. 스크립트가 끝난 뒤에도 /opt/homebrew나 Homebrew 전용 트리가 남으면 그 경로에 sudo rm -rf가 일반적인 정리입니다. Return을 누르기 전에 경로를 다시 확인하세요.
접두사 밖 패키지 설정은 일부러 남는 경우가 많습니다. ~/.gitconfig, 언어 버전 관리자, ~/Library 아래 앱 지원 폴더, var에서 옮겨 둔 데이터베이스 등. Homebrew 접두사가 아닙니다. 소속을 알 때만 지우세요.
셸 프로필이 아직 그것을 가리킴
제거기는 .zprofile, .zshrc, .zshenv, .zlogin, .bash_profile을 편집하지 않습니다. Homebrew 설치기가 흔히 넣는 줄은 다음 형태입니다.
eval "$(/opt/homebrew/bin/brew shellenv)"
Intel Mac에서는 기본 PATH에 이미 /usr/local/bin이 있어 이 줄이 필요 없는 설치가 많습니다. Apple Silicon에서는 brew를 찾기 위해 필요하고, 제거 후에는 새 셸마다 더 이상 없는 바이너리를 실행하려 합니다.
brew shellenv(그리고 더 이상 필요 없는 직접 추가한 /opt/homebrew/bin 또는 /usr/local/bin PATH보내기)를 찾아 지웁니다.
grep -n "brew shellenv\|/opt/homebrew\|/usr/local/bin" ~/.zprofile ~/.zshrc ~/.zshenv ~/.zlogin ~/.bash_profile ~/.bashrc 2>/dev/null
그다음 새 터미널 탭을 여세요. 경고가 사라지고 which brew가 아무 것도 출력하지 않으면 PATH 정리는 끝났습니다. 바로 다시 설치할 계획일 때만 줄을 남기세요.
흔한 실패 유형
잔여물에서 Permission denied. 스크립트는 경로를 나열했지만 지우지 못함. 지목된 각 경로에 sudo rm -rf를 쓰고, -rf와 경로 사이에 공백을 둡니다. rm -rf/opt/...는 경로가 플래그로 해석되어 illegal option이 납니다.
부분 제거 / “Homebrew is already installed”. 이전 시도가 .git, Cellar, bin/brew를 남김. 올바른 --path로 공식 제거 스크립트를 다시 실행하거나 스크립트가 보고한 잔여 접두사를 지운 뒤, 여전히 필요하면 공식 설치 문서에서 다시 설치하세요.
어중간한 정리 뒤 brew: command not found. 제거는 끝났는데 PATH가 옛 접두사를 가리키거나(셸 줄 수정), brew만 사라지고 패키지는 남은 경우입니다. 고전 gist를 쫓지 마세요. 접두사 디렉터리가 남아 있으면 공식 스크립트에 --path를 쓰세요.
Apple Silicon에서 잘못된 접두사. /opt/homebrew는 지웠지만 Rosetta 시대 도구가 /usr/local에 남아 있음. 그 트리가 Homebrew 것이고 무관 소프트와 섞이지 않았음을 확인한 뒤 --path=/usr/local로 실행하세요.
서비스와 로그인 항목이 사라진 바이너리를 계속 호출. 가능하면 제거 전에 brew services를 중지하세요. 이후 로그인 항목과 /opt/homebrew 또는 /usr/local/Cellar를 참조하는 LaunchAgents를 확인하세요.
옛 블로그와 2011 gist. git ls-files와 pbcopy로 지우는 가이드는 이전 Homebrew 레이아웃용입니다. https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh만 쓰세요.
더 작은 작업으로 충분한지 검토
더 작은 정리라면 brew cleanup으로 이전 버전과 캐시, brew uninstall <formula>로 단일 패키지, brew autoremove로 미사용 의존성을 지웁니다. Mole Analyze 보기에서 정리 전에 Homebrew 폴더를 스캔하고, 이후에 다시 스캔해 크기를 비교하세요. Mole은 이 명령들의 변경을 자동으로 추적하지 않습니다.
내보낸 목록으로 다시 설치하기
새 기기에 Homebrew를 설치한 뒤, 다음 두 명령으로 이전 구성을 복원합니다.
xargs brew install < brew-formulae.txt
xargs brew install --cask < brew-casks.txt
cask에는 --cask가 필요하므로 분리합니다. 섞인 목록은 절반이 실패합니다.
brew list는 의존성도 포함하므로 전체를 재생하면 그 의존성도 명시 설치로 표시되어 이후 brew autoremove가 지울 수 있는 범위가 바뀝니다. brew leaves는 상당 부분을 피하지만, 요청한 패키지 기록 그 자체는 아닙니다. 직접 고른 패키지가 다른 패키지의 의존성이기도 할 수 있습니다. 다시 설치하기 전에 목록을 검토하고 필요한 도구를 추가하세요.
자주 묻는 질문
Homebrew를 제거하면 설치했던 패키지가 모두 사라지나요?
Cellar와 Caskroom 안에 남아 있는 것은 사라집니다. 공식 스크립트는 접두사를 지우므로 formula와 cask 메타데이터도 함께 갑니다. 접두사 밖 설정과 데이터는 남을 수 있습니다.
/opt/homebrew와 /usr/local의 차이는?
/opt/homebrew는 Apple Silicon 기본값입니다. /usr/local은 Intel 기본값이며, 이전한 Mac에는 옛 Rosetta Homebrew가 남아 있을 수도 있습니다. 지우기 전에 항상 brew --prefix를 확인하세요.
제거 스크립트를 실행하기 전에 모든 formula를 먼저 지워야 하나요?
단계적 정리를 원하거나 var 데이터를 먼저 살펴볼 때만 필요합니다. 스크립트는 이미 접두사 안 설치된 패키지를 지웁니다. 나중에 다시 설치할 가능성이 있으면 어느 쪽이든 목록을 내보내세요.
제거 후에도 디렉터리가 남는 이유는?
권한 문제이거나 Homebrew가 만들지 않은 디렉터리가 삭제를 막을 수 있습니다. 스크립트는 그 경로를 한 번만 출력합니다. Homebrew 잔여물로 인식될 때만 sudo로 지우세요.
/usr/local 전체를 지워도 안전한가요?
아니요. Intel Mac에서 그 폴더는 공유됩니다. 공식 제거 스크립트를 쓰고, 남은 것이 있으면 스크립트가 지목한 경로만 지우세요.
새 터미널마다 brew shellenv 오류가 보입니다. 어떻게 하나요?
zsh 또는 bash 시작 파일에서 eval "$(...brew shellenv)" 줄을 지운 뒤 새 탭을 여세요. 제거기는 그 파일들을 편집하지 않습니다.