वहाँ एक त्वरित तरीका है मेरे homebrew kegs relink है?


61

मैंने सिर्फ अपने मैकबुक एयर को मावेरिक्स में अपग्रेड किया है। यह प्रतीत होता है कि इस प्रक्रिया ने लगभग सभी सिमलिंक को हटा homebrewदिया है /usr/local/bin। जैसा कि मैंने चीजों को गायब होने की सूचना दी है, तो मैं उन्हें brew unlink <keg> && brew link <keg>(हालांकि सिमिलिंक चले गए हैं, फिर homebrewभी सोचता हूं कि वे वहां हैं इसलिए मुझे unlinkपहले की जरूरत है )। यह कुछ हद तक अक्षम लगता है।

मैं बस सब कुछ के माध्यम से लूप कर सकता हूं /usr/local/Cellarलेकिन हर केग स्वचालित रूप से जुड़ा नहीं है और मैं उन लोगों को लिंक नहीं करना चाहता। इसलिए मेरा अगला अनुमान हर लिंक किए गए केग को सूचीबद्ध करना और उन्हें (ऊपर का उपयोग करके) रिलाइन करना है।

क्या कोई जादू की कमान है जो उन सभी कीगों को खोजेगी जो homebrew सोचते हैं कि जुड़े हुए हैं ताकि मैं उन्हें राहत दे सकूं?


मैंने पुराने मैक से "सब कुछ" को एक नए में स्थानांतरित करने के लिए माइग्रेशन असिस्टेंट का उपयोग किया, और मैंने अपने सभी होमब्रॉव सिम्लिंक भी खो दिए। कष्टप्रद।
ग्वार

जवाबों:


39

/usr/local/Library/LinkedKegs लगता है, अच्छी तरह से, जुड़े कीगों की एक सूची है, तो यह चाल करना चाहिए:

ls -1 /usr/local/Library/LinkedKegs | while read line; do
    echo $line
    brew unlink $line
    brew link --force $line
done

मैं यह सुनिश्चित करने की सलाह दूंगा कि आपने इसे /usr/local/libआज़माने से पहले फिर से लिखने की अनुमति दी है ।


बहुत यकीन है कि यह सिर्फ काम करने के क्रम में मेरे homebrew बहाल। धन्यवाद!
रॉबर्ट मैसाइली

कमाल है, शुक्रिया :) अगर आप बुरा नहीं मानते हैं, तो इससे बाहर निकलने का मुझे यकीन है, मुझे पूरा यकीन है कि हम इस समस्या का सामना करने वाले एकमात्र व्यक्ति नहीं हैं .. goo.gl/YTPMjh
स्टोन एलेसेंड्रो

1
नहीं, मत करो --force! brew linkपर्याप्त होना चाहिए, और कुछ कीगों को वास्तव में लिंक नहीं किया जाना चाहिए (क्योंकि वे सिस्टम लाइब्रेरी के साथ संघर्ष कर सकते हैं), जबकि --forceउनके लिंकेज को मजबूर करेंगे।
क्रिस जेफरसन

हुह। लगता है मैंने भी डिलीट कर दिया /usr/local/Library
काइल स्ट्रैंड

59

यह बैश कमांड ( वहां से लिया गया ) सभी स्थापित फ़ार्मुलों को अनलिंक करेगा और फिर उन्हें फिर से लिंक करेगा:

brew list -1 | while read line; do brew unlink $line; brew link $line; done

मुझे लगता है कि सभी सूत्रों को जोड़ने की आवश्यकता है, अन्यथा, जो भी उपकरण उन पर निर्भर करता है, उन्हें खोजने में सक्षम नहीं होगा ..


मुझे यकीन नहीं है कि सभी फ़ार्मुलों को जोड़ने की आवश्यकता है। कुछ केग-ओनली हैं, लेकिन मुझे नहीं पता है कि, क्योंकि कुछ को दूसरों की निर्भरता के रूप में स्थापित किया गया था।
लूप स्पेस

4
ऐसा लगता है कि आपको बस कुछ चेतावनी मिलती है जैसे "चेतावनी: एक्सपेम्पोर केवल केग है और इसे --फोर्स के साथ जोड़ा जाना चाहिए"
ग्रेवि

2
यहाँ xargs का उपयोग करके एक समान संस्करण दिया गया है:brew list -1 | xargs -I formula sh -c "brew unlink formula && brew link formula"
paulmelnikow

महान उपयोग करने के लिए। मैं 10.12.6 mac os
Raju yourPepe

8

इस प्रश्न के अन्य उत्तरों के अलावा, आपको स्थापित किए गए कई संस्करणों के साथ फार्मूला को त्यागना पड़ सकता है ( brew linkयह आपके लिए ऐसा नहीं करेगा)।

सबसे पहले, उन सभी फ़ार्मुलों को त्यागें जो आप कर सकते हैं:

brew list -1 | while read line; do brew unlink $line; brew link --force $line; done

फिर चलाएं brew doctor, जो आपको शिकायत करे और आपको दो सूचियाँ दे:

  • कई संस्करणों के साथ अनलिमिटेड फॉर्मूले
  • किग-केवल फ़ार्मुलों को मूल relinking प्रक्रिया द्वारा गलत तरीके से लिंक किया गया है।

कई संस्करणों के साथ प्रत्येक सूत्र के लिए निम्न को चलाते हैं, सूत्र नाम के साथ "अजगर" की जगह:

brew info python  

यह आपको अन्य जानकारी के साथ, सभी स्थापित संस्करणों में दिखाएगा। चुनें कि आप किस संस्करण को लिंक करना चाहते हैं (मेरे लिए इसके 2.7.6), और उपयोग करेंbrew switch

brew switch python 2.7.6

आप brew unlinkकेग-केवल फ़ार्मुलों की सूची (यदि कोई हो) पर चलना चाहते हैं जो लिंक किए गए हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.