2013-06-09 11 views
65

मैंने हाल ही में होमब्रू का उपयोग करना शुरू कर दिया है, और जब मैं अपने सिस्टम पर कुछ पीता हूं, तो मैं थोड़ा उलझन में हूं, लेकिन इसकी ब्रूड निर्भरता केवल-केवल हैं, जिसका अर्थ है कि वे हैं /usr/local के तहत जुड़ा हुआ है।होमब्रू और केजी-केवल निर्भरताओं को समझें

उदाहरण के लिए, मैं vips (एक छवि प्रसंस्करण लाइब्रेरी) स्थापित कर रहा हूं। इसकी कई निर्भरताओं में से एक पिक्समैन है। पिक्समैन केवल केईजी के रूप में स्थापित है क्योंकि स्पष्ट रूप से मैक ओएसएक्स (इस मामले में हिम तेंदुए) पहले से ही इसके साथ जहाज (या इसका एक संस्करण) है।

क्या इसका मतलब यह है कि वीपीएस पिक्समैन के सिस्टम संस्करण का उपयोग करेंगे? यदि हां, तो निर्भरता संस्करण के बजाय सिस्टम संस्करण का उपयोग करने से संबंधित संभावित संस्करण समस्याएं नहीं हैं (मान लीजिए कि वे अलग हैं)?

उत्तर

122

एक सॉफ्टवेयर के लिए "केवल-केवल" होने का मतलब है कि यह/usr/local/cellar में स्थापित है लेकिन /usr/local/bin,/usr/local/lib, आदि जैसे स्थानों में लिंक किया गया है। इसका मतलब है कि अन्य सॉफ़्टवेयर जो उस पर निर्भर करता है उसे/usr/local/cellar में फ़ाइलों का उपयोग करने के लिए विशिष्ट निर्देशों के साथ संकलित किया जाना चाहिए। यह स्वचालित रूप से brew install द्वारा किया जाता है जब कोई सूत्र केवल-केवल निर्भरता निर्दिष्ट करता है।

फॉर्मूला जो कि केवल-केवल निर्भरता निर्दिष्ट करते हैं, सुनिश्चित करें कि समकक्ष सिस्टम लाइब्रेरी का उपयोग नहीं किया जाता है। वीपीएस की आपकी स्थापना/usr/local/cellar/pixman/संस्करण में पिक्समैन के विशिष्ट संस्करण के विरुद्ध जुड़ी हुई है, इसलिए यह पिक्समैन के सिस्टम संस्करण या पिक्समैन के किसी भी अन्य होमब्रू संस्करणों से प्रभावित नहीं हो सकता है।

+5

अच्छी व्याख्या! आप अक्सर अन्य otol -L/usr/local/cellar/vips/???/lib/*। Dylib' के साथ जांच सकते हैं ताकि यह देखने के लिए कि कौन से अन्य libs लिंक हैं। –

संबंधित मुद्दे