Как мне исправить мою установку Homebrew после обновления OS X?


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 ).

Вопрос

Как бы я исправил установку Homebrew после обновления OS X? Я в порядке, удалив его и снова начав с нуля, если я могу сделать это автоматически. (Например, используя 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шага.

Если это все еще не работает, попробуйте эту серию команд от Майка МакКуэйда :

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

В rebuildHomeBrew теперь есть команда, но она не разрешает зависимости.


1
Я сделал чистую установку Mavericks на моем новом Mac, и после этого я восстановил резервную копию Time Machine с моего другого Mac. Он оставил компьютер со всем установленным, включая Homebrew и его формулы, но все они были не связаны. Я использовал скрипт, чтобы заново связать все формулы сразу и исправил его! Работает как шарм, спасибо.
Алехандро Гарсия Иглесиас

1
В связанной с этим проблеме мне пришлось развернуть / нажать все метчики, иначе brew не нашел бы некоторых формул, даже если бы утверждал, что правильный метчик уже нажал. for tap in $(brew tap); do brew untap "$tap"; brew tap "$tap"; done
Джоэл Пурра
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.