Як мені виправити встановлення 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

І знову встановити домашню мову. Я впевнений, що все це можна налаштувати за допомогою лялечки.


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)

Зараз rebuildу HomeBrew є команда, але вона не дозволяє вирішити залежності.


1
Я зробив чисту установку Mavericks на своєму новому Mac і після цього відновив резервну копію Time Machine з мого іншого Mac. Він залишив комп'ютер із усім встановленим, включаючи Homebrew і його формулами, але всі вони були від’єднані. Я використовував сценарій, щоб одразу зв'язати всі формули та виправити його! Працює як шарм, дякую.
Алехандро Гарсія Іглесіас

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