Como devo corrigir minha instalação do Homebrew após a atualização do OS X?


25

Contexto

Meu empregador me deu um MacBook Pro para o trabalho de desenvolvimento; no entanto, a maior parte do trabalho de desenvolvimento que faço no meu grupo de pesquisa é para plataformas Linux e, por uma série de razões políticas, não consigo instalar o software de virtualização neste laptop. O Homebrew parece uma boa maneira de instalar essas ferramentas, especialmente porque parece muito hackável (já que usa Ruby; MacPorts não parece hackável, porque usa Tcl). No entanto, o Homebrew depende de bibliotecas do sistema e, por razões de segurança, meu empregador pode (e pelo que ouvi dizer) atualizará meu sistema a qualquer momento. Ouvi dizer que as atualizações do OS X quebram o Homebrew. (Consulte, por exemplo, /programming/7779300/how-should-i-upgrade-xcode-after-upgrading-to-os-x-lion ).

Questão

Como resolver a instalação do Homebrew após uma atualização do OS X? Estou bem em excluí-lo e começar do zero novamente, contanto que eu possa fazê-lo de maneira automatizada. (Por exemplo, usando o Puppet mais um provedor Homebrew para criar um script para uma configuração que será criada automaticamente ao executar um shell script.) Venho pesquisando no Google em todos os lugares e não consigo encontrar respostas para essa pergunta.

Respostas:


8
brew update

Atualiza a instalação do Homebrew. Se houver algum erro, eles devem ser relatados por brew doctor. Tente corrigi-los, você pode usar o script de desinstalação da seguinte maneira:

#!/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

E instale o homebrew novamente. Tenho certeza de que tudo isso é configurável usando fantoches.


7

Eu acho que você deve estar se perguntando se precisa reconstruir todos os pacotes, em vez de apenas desinstalar. Se for esse o caso, entendo que geralmente não é um problema, como diz esta resposta .

Eu tive problemas, principalmente quando mudei para o OS X Mavericks e o Xcode 5, tive que vincular novamente todos os pacotes que havia instalado - aqui está o meu script:

#!/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

Observe a saída, algumas fórmulas exigirão --forcepara a linketapa.

Se isso ainda não funcionar, tente esta série de comandos de Mike McQuaid :

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

Agora existe um rebuildcomando no HomeBrew, mas que atualmente não resolve dependências.


1
Fiz uma instalação limpa do Mavericks no meu novo Mac e depois restaurei um backup do Time Machine do meu outro Mac. Deixou o computador com tudo instalado, incluindo o Homebrew e suas fórmulas, mas todos estavam desvinculados. Eu usei o script para vincular novamente todas as fórmulas de uma só vez e a corrigi! Funciona como um encanto, obrigado.
Alejandro García Iglesias

1
Em um problema relacionado, tive que desvirar / tocar em todos os toques, caso contrário, o brew não encontraria algumas fórmulas, mesmo que alegasse que o toque correto já havia sido tocado. for tap in $(brew tap); do brew untap "$tap"; brew tap "$tap"; done
Joel Purra
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.