Bagaimana saya harus memperbaiki instalasi Homebrew saya setelah memutakhirkan OS X?


25

Konteks

Majikan saya memberi saya MacBook Pro untuk pekerjaan pengembangan; namun, sebagian besar pekerjaan pengembangan yang saya lakukan dalam grup riset saya adalah untuk platform Linux, dan untuk sejumlah alasan kebijakan, saya tidak dapat menginstal perangkat lunak virtualisasi pada laptop ini. Homebrew kelihatannya merupakan cara yang baik untuk memasang alat-alat ini, terutama karena alat ini terlihat sangat dapat diretas (karena menggunakan Ruby; MacPorts tidak terlihat dapat diretas, karena menggunakan Tcl). Namun, Homebrew bergantung pada pustaka sistem, dan untuk alasan keamanan, majikan saya dapat (dan dari apa yang saya dengar, sering) meningkatkan sistem saya kapan saja. Saya pernah mendengar bahwa peningkatan OS X akan memecah Homebrew. (Lihat, misalnya, /programming/7779300/how-should-i-upgrade-xcode-after-upgrading-to-os-x-lion ).

Pertanyaan

Bagaimana saya memperbaiki instalasi Homebrew saya setelah upgrade OS X? Saya baik-baik saja dengan menghapusnya dan mulai dari awal lagi, selama saya bisa melakukannya secara otomatis. (Misalnya, menggunakan Puppet plus penyedia Homebrew untuk membuat skrip konfigurasi yang secara otomatis akan dibangun setelah menjalankan skrip shell.) Saya telah mencari Google di mana-mana dan sepertinya tidak dapat menemukan jawaban untuk pertanyaan ini.

Jawaban:


8
brew update

Memperbarui instalasi Homebrew. Jika ada kesalahan, mereka harus dilaporkan oleh brew doctor. Coba perbaiki yang lain, Anda dapat menggunakan skrip penghapusan instalan sebagai berikut:

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

Dan pasang kembali homebrew. Cukup yakin semua ini dapat dikonfigurasi menggunakan boneka.


7

Saya pikir Anda mungkin bertanya-tanya apakah Anda perlu membangun kembali semua paket, bukan hanya mencopot pemasangan. Jika itu masalahnya, saya mengerti itu umumnya bukan masalah, seperti jawaban ini .

Saya mengalami masalah, terutama ketika berganti ke OS X Mavericks dan Xcode 5 Saya harus menautkan kembali semua paket yang telah saya instal - inilah skrip saya:

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

Perhatikan hasilnya, beberapa rumus akan diperlukan --forceuntuk linklangkah ini.

Jika itu masih tidak berhasil, coba seri perintah ini dari Mike McQuaid :

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

Sekarang ada rebuildperintah di HomeBrew, tetapi saat ini tidak menyelesaikan dependensi.


1
Saya melakukan instalasi bersih Mavericks di Mac baru saya dan setelah itu saya mengembalikan cadangan Time Machine dari Mac saya yang lain. Itu meninggalkan komputer dengan segala sesuatu yang terinstal, termasuk Homebrew dan rumus-rumusnya, tetapi semuanya tidak terhubung. Saya menggunakan skrip untuk menghubungkan kembali semua formula sekaligus dan memperbaikinya! Bekerja seperti pesona, terima kasih.
Alejandro García Iglesias

1
Dalam masalah terkait, saya harus membuka keran / mengetuk semua keran, jika tidak, minuman tidak akan menemukan beberapa formula meskipun itu mengklaim keran yang benar telah disadap. for tap in $(brew tap); do brew untap "$tap"; brew tap "$tap"; done
Joel Purra
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.