OS X를 업그레이드 한 후 Homebrew 설치를 어떻게 수정해야합니까?


25

문맥

고용주는 개발 작업을 위해 MacBook Pro를 줬습니다. 그러나 연구 그룹에서 수행하는 대부분의 개발 작업은 Linux 플랫폼을위한 것이며 여러 가지 정책상의 이유로이 랩톱에 가상화 소프트웨어를 설치할 수 없습니다. Homebrew는 이러한 도구를 설치하는 좋은 방법으로 보입니다. 특히 Ruby를 사용하기 때문에 해킹이 가능해 보이므로 MacPorts는 Tcl을 사용하기 때문에 해킹 할 수 없습니다. 그러나 Homebrew는 시스템 라이브러리에 의존하며 보안상의 이유로 고용주는 언제든지 시스템을 업그레이드 할 수 있습니다. OS X 업그레이드로 인해 Homebrew가 중단 될 것이라고 들었습니다. (예를 들어 /programming/7779300/how-should-i-upgrade-xcode-after-upgrading-to-os-x-lion 참조 ).

의문

OS X 업그레이드 후 Homebrew 설치를 수정하려면 어떻게해야합니까? 자동화 된 방식으로 할 수있는 한 삭제하고 처음부터 다시 시작하는 것이 좋습니다. 예를 들어 Puppet과 Homebrew 공급자를 사용하여 셸 스크립트를 실행할 때 자동으로 구성되는 구성을 스크립팅합니다. 나는 모든 곳에서 인터넷 검색을 해왔으며이 질문에 대한 답변을 찾을 수없는 것 같습니다.

답변:


8
brew update

Homebrew 설치를 업데이트합니다. 오류가 있으면로보고해야합니다 brew doctor. 다른 방법으로 수정 해보십시오. 다음과 같이 제거 스크립트를 사용할 수 있습니다.

#!/bin/sh
# Just copy and paste the lines below (all at once, it won't work line by line!)
# MAKE SURE YOU ARE HAPPY WITH WHAT IT DOES FIRST! THERE IS NO WARRANTY!

function abort {
  echo "$1"
  exit 1
}

set -e

/usr/bin/which -s git || abort "brew install git first!"
test -d /usr/local/.git || abort "brew update first!"

cd `brew --prefix`
git checkout master
git ls-files -z | pbcopy
rm -rf Cellar
bin/brew prune
pbpaste | xargs -0 rm
rm -r Library/Homebrew Library/Aliases Library/Formula Library/Contributions
test -d Library/LinkedKegs && rm -r Library/LinkedKegs
rmdir -p bin Library share/man/man1 2> /dev/null
rm -rf .git
rm -rf ~/Library/Caches/Homebrew
rm -rf ~/Library/Logs/Homebrew
rm -rf /Library/Caches/Homebrew

그리고 homebrew를 다시 설치하십시오. 꼭두각시를 사용하여 구성 할 수 있습니다.


7

단순히 제거하는 것이 아니라 모든 패키지 를 다시 빌드해야하는지 궁금 할 것입니다. 그럴 경우, 이 답변에서 알 수 있듯이 일반적으로 문제아니라는 것을 알고 있습니다 .

특히 OS X Mavericks 및 Xcode 5로 변경할 때 문제가 발생했습니다. 설치 한 모든 패키지를 다시 연결해야했습니다. 여기 스크립트가 있습니다.

#!/bin/bash
FORMULAS=(`brew list`);
for FORMULA in "${FORMULAS[@]}"
do 
    echo "brew unlink $FORMULA" && echo "brew link $FORMULA";
    OUTPUT=`brew unlink $FORMULA`;
    echo $OUTPUT;
    OUTPUT=`brew link $FORMULA`;
    echo $OUTPUT;
done

출력에 유의하십시오. 일부 수식 --force에는 link단계 가 필요 합니다 .

그래도 작동하지 않으면 Mike McQuaid의 다음 명령 시리즈를 사용해보십시오 .

brew list > brew-list.txt
brew uninstall $(cat brew-list.txt)
brew install $(cat brew-list.txt)

rebuildHomeBrew 에는 이제 명령이 있지만 현재 종속성을 해결하지는 않습니다.


1
새 Mac에서 Mavericks를 새로 설치 한 후 다른 Mac에서 Time Machine 백업을 복원했습니다. 그것은 Homebrew와 공식을 포함한 모든 것이 설치된 상태로 컴퓨터를 떠났지만 모두 연결되지 않았습니다. 스크립트를 사용하여 모든 수식을 한 번에 다시 연결하고 수정했습니다! 고마워요.
Alejandro García Iglesias

1
관련 문제에서 나는 모든 탭을 언탭하거나 탭해야했습니다. 그렇지 않으면 올바른 탭이 이미 탭되었다고해도 brew는 일부 수식을 찾지 못할 것입니다. for tap in $(brew tap); do brew untap "$tap"; brew tap "$tap"; done
Joel Purra
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.