Come devo riparare la mia installazione di Homebrew dopo aver aggiornato OS X?


25

Contesto

Il mio datore di lavoro mi ha dato un MacBook Pro per il lavoro di sviluppo; tuttavia, la maggior parte del lavoro di sviluppo che svolgo nel mio gruppo di ricerca è per piattaforme Linux e, per una serie di motivi politici, non riesco a installare software di virtualizzazione su questo laptop. Homebrew sembra un buon modo per installare questi strumenti, soprattutto perché sembra molto hackerabile (dal momento che usa Ruby; MacPorts non sembra hackerabile, perché usa Tcl). Tuttavia, Homebrew si affida alle librerie di sistema e, per motivi di sicurezza, il mio datore di lavoro può (e da quello che sento, frequentemente) aggiornare il mio sistema in qualsiasi momento. Ho sentito che gli aggiornamenti di OS X romperanno Homebrew. (Vedi, ad esempio, /programming/7779300/how-should-i-upgrade-xcode-after-upgrading-to-os-x-lion ).

Domanda

Come potrei risolvere la mia installazione di Homebrew dopo un aggiornamento di OS X? Sto bene eliminandolo e ricominciando da capo, purché possa farlo in modo automatizzato. (Ad esempio, usando Puppet più un provider Homebrew per creare script di una configurazione che si baserà automaticamente sull'esecuzione di uno script di shell.) Ho cercato su Google ovunque e non riesco a trovare alcuna risposta a questa domanda.

Risposte:


8
brew update

Aggiorna l'installazione di Homebrew. Se ci sono errori, dovrebbero essere segnalati da brew doctor. Prova a risolverli altrimenti, potresti utilizzare lo script di disinstallazione come segue:

#!/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 installa di nuovo homebrew. Sono abbastanza sicuro che tutto ciò sia configurabile usando burattino.


7

Penso che ti starai chiedendo se è necessario ricostruire tutti i pacchetti piuttosto che disinstallarli. Se è così, capisco che in genere non è un problema, come dice questa risposta .

Ho avuto problemi, soprattutto quando sono passato a OS X Mavericks e Xcode 5 ho dovuto ricollegare tutti i pacchetti che avevo installato - ecco il mio 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

Nota l'output, alcune formule richiederanno --forceper il linkpassaggio.

Se il problema persiste, prova questa serie di comandi di Mike McQuaid :

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

Ora c'è un rebuildcomando in HomeBrew, ma che attualmente non risolve dipendenze.


1
Ho fatto un'installazione pulita di Mavericks sul mio nuovo Mac e successivamente ho ripristinato un backup di Time Machine dall'altro mio Mac. Ha lasciato il computer con tutto installato, incluso Homebrew e le sue formule, ma tutte erano scollegate. Ho usato lo script per ricollegare tutte le formule contemporaneamente e l'ho risolto! Funziona come un incantesimo, grazie.
Alejandro García Iglesias,

1
In un problema correlato ho dovuto stappare / toccare tutti i tocchi, altrimenti brew non avrebbe trovato alcune formule anche se sosteneva che il rubinetto corretto era già stato toccato. for tap in $(brew tap); do brew untap "$tap"; brew tap "$tap"; done
Joel Purra,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.