जब brew link इसलिए रुक जाता है क्योंकि कोई पथ पहले से मौजूद है, तो सबसे पहले यह पहचानें कि उस पथ का स्वामी कौन है। यदि यह किसी अन्य Homebrew फ़ॉर्मूला का सिमलिंक है, तो उस फ़ॉर्मूला को अनलिंक करें; यदि यह कोई असंबंधित फ़ाइल है, तो ओवरराइट करने पर विचार करने से पहले Homebrew के ड्राई रन की जाँच करें। विरोध का मतलब यह नहीं है कि नया फ़ॉर्मूला इंस्टॉल होने में विफल रहा: यह पहले से ही अपने keg में मौजूद हो सकता है, जो Homebrew के शेयर्ड प्रीफ़िक्स में एक सुरक्षित लिंक की प्रतीक्षा कर रहा है। Homebrew का brew मैन्युअल
विरोध (कॉन्फ़्लिक्ट) संदेश आपको क्या बताता है
एक Homebrew फ़ॉर्मूला एक वर्ज़न किए गए keg में इंस्टॉल होता है, और brew link साझा डायरेक्टरी जैसे कि bin, lib और include में सिमलिंक बनाता है। यह एरर आमतौर पर एक लक्षित पथ (टारगेट पाथ) का नाम बताता है और कह सकता है कि यह किसी अन्य फ़ॉर्मूला से संबंधित है या यह पहले से मौजूद है। Homebrew दस्तावेज़ में brew link को इंस्टॉल की गई फ़ाइलों को उसके प्रीफ़िक्स में लिंक करने के रूप में वर्णित किया गया है, जबकि brew unlink उस प्रीफ़िक्स से किसी फ़ॉर्मूला के लिंक हटा देता है। Homebrew brew मैन्युअल
अगला सुरक्षित कदम स्वामित्व (ownership) पर निर्भर करता है। किसी Homebrew सिमलिंक को बदलने से यह बदल सकता है कि कौन सा फ़ॉर्मूला किसी कमांड या लाइब्रेरी की आपूर्ति करता है। किसी असंबंधित फ़ाइल को बदलने से Homebrew के बाहर के सॉफ़्टवेयर प्रभावित हो सकते हैं। पूरा एरर संदेश पढ़ें और --overwrite को एक सामान्य सुधार स्विच के रूप में न लें।
फ़ॉर्मूला और टकराने वाले पथ (colliding path) का निरीक्षण करें
विफल लिंक कमांड में दिखाए गए फ़ॉर्मूला नाम का उपयोग FORMULA के स्थान पर करें। brew info फ़ॉर्मूला विवरण दिखा सकता है, जिसमें यह भी शामिल है कि क्या यह keg-only है; brew list वर्तमान keg की फ़ाइलों का सार प्रस्तुत करता है। आप Mac के Intel या Apple silicon Homebrew स्थान को हार्ड-कोड किए बिना इसके सक्रिय प्रीफ़िक्स के बारे में भी पूछ सकते हैं:
brew info FORMULA
brew list FORMULA
brew --prefix FORMULA
यदि एरर कहता है कि मौजूदा लक्ष्य किसी अन्य फ़ॉर्मूला से संबंधित सिमलिंक है, तो उस फ़ॉर्मूला का नाम भी नोट करें। विरोध संदेश सीधे brew unlink OTHER_FORMULA का सुझाव दे सकता है। यदि लक्ष्य कोई सामान्य फ़ाइल है, किसी cask से आया लिंक है, या कुछ ऐसा है जिसका स्वामी स्पष्ट नहीं है, तो उसे बदलने से पहले रुकें और जाँच करें। केवल इसलिए इसे न हटाएं क्योंकि Homebrew किसी टकराव (collision) की रिपोर्ट करता है।
किसी अन्य फ़ॉर्मूला के स्वामित्व वाले विरोध को हल करें
जब लक्ष्य किसी भिन्न फ़ॉर्मूला का हो और आप चाहते हैं कि नया फ़ॉर्मूला उस परस्पर विरोधी पथ को प्रदान करे, तो पुराने फ़ॉर्मूला को अनलिंक करें, फिर अनुरोधित फ़ॉर्मूला को लिंक करें:
brew unlink OTHER_FORMULA
brew link FORMULA
अनलिंक करने से उस फ़ॉर्मूला के सिमलिंक प्रीफ़िक्स से हट जाते हैं; यह इसके keg को अनइंस्टॉल नहीं करता है। यदि आवश्यक हो तो पुराने फ़ॉर्मूला को बाद में फिर से लिंक किया जा सकता है। Homebrew किसी फ़ॉर्मूला को अस्थायी रूप से अक्षम करने के तरीके के रूप में अनलिंक और रीलिंक करने का भी दस्तावेज़ीकरण करता है। Homebrew brew मैन्युअल
यदि अन्य फ़ॉर्मूला की अभी भी आवश्यकता है, तो याद रखें कि इसे अनलिंक करने से इसके कमांड या फ़ाइलें शेयर्ड प्रीफ़िक्स के माध्यम से अनुपलब्ध हो सकती हैं। अनुमान के आधार पर कई पैकेजों को अनलिंक करने से बचें। ऐसे विरोध के लिए जो स्पष्ट रूप से किसी अन्य फ़ॉर्मूला का सिमलिंक नहीं है, ड्राई रन के साथ आगे बढ़ें और सूचीबद्ध प्रत्येक पथ का निरीक्षण करें।
--overwrite का उपयोग करने से पहले पूर्वावलोकन (preview) करें
Homebrew का --overwrite विकल्प लिंक करते समय पहले से उसके प्रीफ़िक्स में मौजूद फ़ाइलों को हटा देता है। इसका --dry-run विकल्प उन फ़ाइलों को सूचीबद्ध करता है जिन्हें बिना बदले लिंक या हटाया जाएगा। पहले अनुरोधित ऑपरेशन का पूर्वावलोकन करें:
brew link --overwrite --dry-run FORMULA
पथों की सावधानीपूर्वक समीक्षा करें। यदि सूची में ऐसी फ़ाइलें शामिल हैं जिन्हें आप किसी अन्य टूल द्वारा आवश्यक मानते हैं, या अपेक्षित Homebrew प्रीफ़िक्स के बाहर कुछ भी है, तो तब तक आगे न बढ़ें जब तक आप उसके स्वामी और उद्देश्य को समझ न लें। यदि पूर्वावलोकन में केवल वही फ़ाइलें शामिल हैं जिन्हें आप बदलना चाहते हैं, तो वास्तविक कमांड चलाएं:
brew link --overwrite FORMULA
यह शेयर्ड प्रीफ़िक्स में पथों को बदलता है। पूर्वावलोकन निर्णय लेने का बिंदु है; यह अपने आप विरोध को हल नहीं करता है। Homebrew brew मैन्युअल
यदि फ़ॉर्मूला keg-only है
एक अलग संदेश यह कह सकता है कि फ़ॉर्मूला keg-only है और इसे --force के साथ लिंक किया जाना चाहिए। Keg-only का अर्थ है कि Homebrew फ़ॉर्मूला को सामान्य प्रीफ़िक्स में लिंक करने के बजाय उसके अपने keg में रखता है। Homebrew इस व्यवस्था का उपयोग macOS सॉफ़्टवेयर को शैडो करने या किसी अन्य फ़ॉर्मूला के साथ टकराव से बचने के लिए करता है। कारण और किसी भी उपयोग मार्गदर्शन के लिए brew info FORMULA देखें। Homebrew FAQ
केवल इसलिए --force न जोड़ें क्योंकि एक सामान्य लिंक पाथ विरोध की रिपोर्ट करता है: --force केवल एक keg-only फ़ॉर्मूला को लिंक करने की अनुमति देता है; इसका मतलब यह नहीं है कि परस्पर विरोधी पथों को ओवरराइट करना सुरक्षित है। Homebrew keg-only निर्भरताओं (dependencies) को विश्व स्तर पर फ़ोर्स-लिंक करने की सलाह नहीं देता है, क्योंकि असंबंधित बिल्ड और सिस्टम कमांड तब एक अलग निर्भरता को हल कर सकते हैं। ऐसे बिल्ड के लिए जिसे keg-only टूल या लाइब्रेरी की आवश्यकता होती है, Homebrew इसे विश्व स्तर पर प्रदर्शित करने के बजाय उस बिल्ड के लिए इसके फ़ॉर्मूला प्रीफ़िक्स का उपयोग करने की सलाह देता है। Homebrew की keg-only निर्भरता गाइड
परिणाम की पुष्टि करें और जानें कि कब रुकना है
विशिष्ट विरोध को हल करने के बाद, फ़ॉर्मूला की लिंक स्थिति की जाँच करें और केवल आवश्यक होने पर पुनः प्रयास करें:
brew list --versions FORMULA
brew link FORMULA
यदि यह पहले से लिंक है, तो Homebrew फिर से लिंक बनाने के बजाय इसकी रिपोर्ट कर सकता है। यदि लिंकिंग अभी भी विफल रहती है, तो शेष पथ की पहचान करने के लिए नए एरर का उपयोग करें; बिना सोचे-समझे ओवरराइट दोहराने से बचें। जब लक्ष्य स्पष्ट रूप से Homebrew-प्रबंधित नहीं है, या ड्राई रन ऐसी फ़ाइलें दिखाता है जिन्हें आप सुरक्षित रूप से प्रतिस्थापित नहीं कर सकते हैं, तो लिंक को अनसुलझा छोड़ दें और पहले स्वामित्व वाले सॉफ़्टवेयर की जाँच करें। प्रीफ़िक्स में अपने लिंक से keg एक अलग इंस्टॉलेशन बना रहता है, इसलिए लिंकिंग अधूरी होने पर भी एक इंस्टॉल किया गया फ़ॉर्मूला निदान (diagnosis) के लिए उपलब्ध रह सकता है।