ฉันจะแก้ไขการติดตั้ง Homebrew หลังจากอัปเกรด OS X ได้อย่างไร


25

บริบท

นายจ้างของฉันให้ MacBook Pro กับฉันสำหรับงานพัฒนา อย่างไรก็ตามงานพัฒนาส่วนใหญ่ที่ฉันทำในกลุ่มการวิจัยของฉันคือแพลตฟอร์ม Linux และด้วยเหตุผลทางด้านนโยบายฉันไม่สามารถติดตั้งซอฟต์แวร์การจำลองเสมือนบนแล็ปท็อปนี้ได้ Homebrew ดูเหมือนจะเป็นวิธีที่ดีในการติดตั้งเครื่องมือเหล่านี้โดยเฉพาะอย่างยิ่งเนื่องจากมันดูเป็นแฮ็คมาก (เนื่องจากใช้ Ruby; MacPort ไม่สามารถแฮ็กได้เนื่องจากใช้ Tcl) อย่างไรก็ตาม Homebrew อาศัยไลบรารีระบบและด้วยเหตุผลด้านความปลอดภัยนายจ้างของฉันอาจ (และจากสิ่งที่ฉันได้ยินบ่อยครั้ง) จะอัปเกรดระบบของฉันได้ตลอดเวลา ฉันได้ยินมาว่าการอัพเกรด OS X จะทำให้ Homebrew แตก (ดูตัวอย่างเช่น/programming/7779300/how-should-i-upgrade-xcode-after-upgrading-to-os-x-lion )

คำถาม

ฉันจะแก้ไขการติดตั้ง Homebrew หลังจากอัปเกรด OS X ได้อย่างไร ฉันพอใจกับการลบและเริ่มต้นใหม่อีกครั้งตราบใดที่ฉันสามารถทำได้โดยอัตโนมัติ (ตัวอย่างเช่นการใช้ Puppet plus ผู้ให้บริการ Homebrew เพื่อเขียนสคริปต์การกำหนดค่าที่จะสร้างโดยอัตโนมัติเมื่อใช้งานเชลล์สคริปต์) ฉันใช้งาน Google ทุกที่และดูเหมือนจะไม่พบคำตอบสำหรับคำถามนี้

คำตอบ:


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ขั้นตอนนี้

หากยังไม่ได้ผลให้ลองใช้ชุดคำสั่งนี้จาก Mike McQuaid :

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 และเป็นสูตร แต่ทุกอย่างถูกยกเลิกการเชื่อมโยง ฉันใช้สคริปต์เพื่อเชื่อมโยงสูตรทั้งหมดอีกครั้งและแก้ไขมัน! ทำงานเหมือนจับใจขอบคุณ
Alejandro García Iglesias

1
ในปัญหาที่เกี่ยวข้องฉันต้อง untap / แตะก๊อกทั้งหมดมิฉะนั้นชงจะไม่พบสูตรบางอย่างแม้ว่ามันจะอ้างว่าแตะที่ถูกต้องได้รับการแตะแล้ว for tap in $(brew tap); do brew untap "$tap"; brew tap "$tap"; done
Joel Purra
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.