ओएस एक्स को अपग्रेड करने के बाद मुझे अपना होमब्रेव इंस्टॉलेशन कैसे तय करना चाहिए?


25

प्रसंग

मेरे नियोक्ता ने मुझे विकास कार्य के लिए मैकबुक प्रो दिया; हालाँकि, मैं अपने अनुसंधान समूह में अधिकांश विकास कार्य लिनक्स प्लेटफार्मों के लिए करता हूं, और कई नीतिगत कारणों से, मैं इस लैपटॉप पर वर्चुअलाइजेशन सॉफ्टवेयर स्थापित नहीं कर सकता। होमब्रे एक अच्छे तरीके की तरह दिखता है जिसमें इन उपकरणों को स्थापित किया जाता है, खासकर क्योंकि यह बहुत हैक करने योग्य दिखता है (चूंकि यह रूबी का उपयोग करता है; मैकपोर्ट्स हैक करने योग्य नहीं दिखता है, क्योंकि यह Tcl का उपयोग करता है)। हालांकि, होमब्रेव सिस्टम पुस्तकालयों पर निर्भर करता है, और सुरक्षा कारणों से, मेरा नियोक्ता (और जो मैं सुनता हूं, अक्सर होगा) किसी भी समय मेरे सिस्टम को अपग्रेड कर सकता है। मैंने सुना है कि OS X अपग्रेड होमब्रे को तोड़ देगा। (उदाहरण के लिए देखें, /programming/7779300/how-should-i-upgrad-xcode-after-upmission-to-os-x-lion )।

सवाल

ओएस एक्स अपग्रेड के बाद मैं अपने होमब्रे को स्थापित करने के बारे में कैसे पता लगाऊंगा? मैं इसे हटाने और फिर से खरोंच से शुरू करने के साथ ठीक हूं, जब तक कि मैं स्वचालित तरीके से ऐसा कर सकता हूं। (उदाहरण के लिए, पपेट प्लस होमब्रेव प्रदाता का उपयोग करके एक स्क्रिप्ट को कॉन्फ़िगर करना जो कि शेल स्क्रिप्ट को चलाने पर स्वचालित रूप से निर्मित होगा।) मैं हर जगह Googling रहा हूं और इस प्रश्न का कोई उत्तर नहीं ढूंढ सकता हूं।

जवाबों:


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 की एक साफ स्थापना की और उसके बाद मैंने अपने दूसरे मैक से टाइम मशीन का बैकअप बहाल किया। यह सब कुछ स्थापित करने के साथ कंप्यूटर छोड़ दिया, जिसमें Homebrew और यह सूत्र हैं, लेकिन उन सभी को अनलिंक किया गया था। मैंने एक बार में सभी फ़ार्मुलों को पुन: लिंक करने के लिए स्क्रिप्ट का उपयोग किया और इसे ठीक किया! एक आकर्षण की तरह काम करता है, धन्यवाद।
एलेजांद्रो गार्सिया इग्लेसियस

1
एक संबंधित समस्या में मुझे सभी टैपों को अनपैप / टैप करना पड़ा, अन्यथा ब्रू को कुछ सूत्र नहीं मिलेंगे, हालांकि यह दावा करता था कि सही टैप पहले ही टैप किया जा चुका था। for tap in $(brew tap); do brew untap "$tap"; brew tap "$tap"; done
जोएल पुर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.