क्या होमब्रे और मैकपोर्ट दोनों को एक ही मशीन पर इंस्टॉल करना सुरक्षित है?


73

मैं अपने iMac पर MacPorts स्थापित बंदरगाहों की एक उचित संख्या के साथ है।

मैं Homebrew को आज़माने में दिलचस्पी रखता हूं, हालांकि, जैसा कि मैंने इसके बारे में कई अच्छी बातें सुनी हैं, और क्योंकि मैंने देखा है कि इसमें मेरे द्वारा उपयोग किए जाने वाले कई टूल के अप-टू-डेट संस्करण शामिल हैं।

लेकिन क्या एक ही मशीन पर दो सह-अस्तित्ववादी हो सकते हैं, या क्या मुझे मैकपोर्ट्स को पूरी तरह से अनइंस्टॉल करने की जरूरत है?

साथ ही, यदि दोनों को एक ही समय में स्थापित किया जा सकता है, तो क्या वे एक दूसरे से पूरी तरह स्वतंत्र होंगे? Homebrew की विशेषताओं में से एक यह है कि उन चीजों के नए संस्करणों को फिर से स्थापित नहीं किया गया है जो पहले से ही सिस्टम में शामिल हैं (जैसे कि अजगर)। क्या यह भी उन चीजों के संस्करणों को स्थापित नहीं करता है जो मैकपोर्ट द्वारा पहले से ही बनाए हुए हैं?

अगर मैं बाद में MacPorts की स्थापना रद्द करता हूं तो क्या होगा?

जवाबों:


24

वे एक साथ अच्छी तरह से नहीं करेंगे। Apple gcc कुछ चीजों के लिए / usr / लोकल में दिखता है। इसका मतलब यह है कि एक मैकपोर्ट संकलन कुछ ऐसा पा सकता है जिसकी कुली उम्मीद नहीं करते थे। / Usr / स्थानीय में मिली चीजों के उदाहरणों के लिए macports मेल सूचियों और बग्स को देखें।


4
मैंने केवल होमब्रे पर बहुत ही सरसरी निगाह डाली है, लेकिन अगर आपने होमब्रे से / usr / लोकल के लिए डिफ़ॉल्ट इंस्टॉल लोकेशन को कुछ इस तरह से बदल दिया जैसे / ऑप्ट / होमब्रे / यूएसआर / लोकल, तो क्या उस समस्या से बचा जा सकेगा?
बाबू

@ बाबू - मदिरापान के अनुसार, आपको सावधानी के साथ आगे बढ़ना
पीटर अज़ताई

@babu - संभवतः लेकिन होमब्रेव या मैकपोर्ट्स में से किन मुद्दों के साथ फ़ॉर्स्ट पेन मार्ग होगा और दूसरा उन निष्पादनों को भी
उठाएगा,

18

मैंने इसी तरह के सवाल पर एक और जवाब दिया :

अगर यह / usr / स्थानीय में स्थापित है, तो स्रोत से सॉफ़्टवेयर बनाते समय Homebrew समस्याएँ पैदा करेगा। यह डिफ़ॉल्ट है, जो एक बुरा विकल्प है क्योंकि यह पथ कंपाइलर और अन्य टूल के डिफ़ॉल्ट खोज पथ में है। इसलिए, अन्य पैकेजिंग सॉफ़्टवेयर से बिल्ड गलत तरीके से निर्भरता उठा सकता है, अपने स्वयं के बजाय होमब्रे के संस्करण का उपयोग कर सकता है।

वर्षों पहले, इस परियोजना की शुरुआत में, यहां तक ​​कि MacPorts / usr / स्थानीय का उपयोग कर रहा था। लेकिन यह अन्य उपकरणों के साथ सहयोग करने के लिए नहीं निकला जैसा कि उनके अक्सर पूछे जाने वाले प्रश्न में प्रलेखित है। दुर्भाग्य से Homebrew डेवलपर्स पूर्व अनुभवों के बारे में नहीं सुनना चाहते थे और इस तरह के तथ्यों को नजरअंदाज कर दिया था ...

सामान्य तौर पर, सभी समस्याओं से बचने के लिए केवल एक उपकरण से चिपके रहना बेहतर होता है। MacPorts किसी भी harcoded पथ को बाहर निकालने के लिए अपना सर्वश्रेष्ठ प्रयास कर रहा है, जैसे / Fink द्वारा उपयोग किया जाता है। तो आमतौर पर यह काम करेगा, लेकिन / usr / स्थानीय में कुछ भी स्थापित होने से निश्चित रूप से इसके लिए समस्याएं पैदा होंगी।

[...]


ऐसा लगता है कि होमब्रे को इनस्टॉल करना भी संभव है ~/.homebrew। अगर इसके बजाय इसे वहां स्थापित किया जाता है तो क्या यह अभी भी MacPorts के साथ हस्तक्षेप करेगा?
बेहरांग

/ Usr / स्थानीय के अलावा कोई अन्य स्थान ठीक होना चाहिए।
raimue

अगर MacPort स्थापित है, तो MacPort और Homebrew कोक्सिस्ट अच्छी तरह से करेंगे, अगर कोई Homebrew को / ऑप्ट / लोकल में स्थापित करेगा?
एडम एलएस

1
जब MacPorts पहले से ही वहां स्थापित है, तो आपको अन्य सॉफ़्टवेयर को मैन्युअल रूप से / ऑप्ट / स्थानीय में स्थापित नहीं करना चाहिए। यह निश्चित रूप से हस्तक्षेप करेगा, क्योंकि आप उन फ़ाइलों को रखते हैं जो मैकपोर्ट्स के लिए अज्ञात हैं, जिससे पोर्ट स्थापित करते समय संघर्ष हो सकता है।
raimue

8

मैं सोचता था कि इस बात की चिंता है कि गनु निर्माण उपकरण क्या बनायेंगे, जो कि /usr/localव्यंग्य पर आधारित है। बिल्ड टूल्स से उम्मीद है कि वहां बहुत सारी चीजें होंगी: पैकेज प्रबंधकों (I मजाक) से पहले अच्छे दिनों में, हमने जो कुछ भी संकलित किया है /usr/local। लेकिन जब ऑटोकॉन्फ आमतौर पर मुद्दों का पता लगाता है, तो कई ओपन-सोर्स प्रोजेक्ट्स की सरासर जटिलताएं पैदा करती हैं और समस्याएँ पैदा करती हैं, जब आप मुश्किल में पड़ जाते हैं, तो ये समस्याएँ दूर हो सकती हैं।

लेकिन ऑटोकॉन्फ़ के साथ परेशानी का जोखिम कुछ ऐसा है जिसके /usr/localरखरखाव के लिए दो, तीन या चार अलग-अलग प्रतियों की पर्ल, टीएलसी, और रूबी की अलग-अलग पैकेज लाइब्रेरी के अलग-अलग कवरेज के साथ संतुलित होने की आवश्यकता नहीं होनी चाहिए । अप्रिय।

चूंकि MacPorts और Fink के साथ मेरा अनुभव आमतौर पर वास्तव में इसी के कारण हुआ है, और पुराने जमाने के तरीके को संकलित करने के लिए स्विच करने पर /usr/local, मुझे यह देखकर प्रसन्नता हुई कि Homebrew ने इसके बारे में कोई गड़बड़ नहीं की। मैंने MacPorts को स्थापित करने के लिए कॉन्फ़िगर करने की कोशिश की /usr/local, लेकिन MacPorts उस मुश्किल को आसान बनाने के लिए अपने रास्ते से बाहर चला गया। मैं समझता हूं कि प्रेरणा उनके मेलिंग सूची और बग ट्रैकर पर मदद के लिए रोते समय खुद के लिए जीवन को आसान बनाने के लिए है: कृपया जागरूक रहें, हालांकि, जबकि हमें स्वयंसेवक पैकर्स के प्रयास का सम्मान करना चाहिए और अपने समय को कीमती मानना ​​चाहिए, डिबगिंग सुविधा केवल उपयोगकर्ता के रूप में आपको प्रभावित करने वाली सरलता का एकमात्र प्रकार नहीं है।

Homebrew, इस संबंध में, कम से कम चीजों को जिस तरह से वे करते थे, और MacPorts हस्तक्षेप न करने की कोशिश करते हैं। यदि आप दस्तावेज़ों के लिए तैयार हैं, जो आपको Homebrew के साथ पैकेज करने की आवश्यकता है, और कठिनाइयों के मामले में / usr / स्थानीय स्वच्छ और पुन: स्थापित करें, तो आप हमेशा मामले में वापस आ सकते हैं क्योंकि चीजें बुरी तरह से गलत हो जाती हैं। और एक बार जब आपको पता चलता है कि / usr / लोकल में समस्याएं आम तौर पर आपकी मशीनों को स्थायी नुकसान का जोखिम नहीं उठाती हैं, तो आप जोखिम लेने के लिए स्वतंत्र महसूस कर सकते हैं।

मैं अभी ध्यान देता हूं कि FreeBSD की तुलना में OSX पर पैकेजिंग कितनी खराब है: Apple को वास्तव में अपने BSD उप-प्रजाति की उपयोगिता की परवाह नहीं है, क्योंकि यह एक ऐसी समस्या है जिसकी वे मदद कर सकते हैं।


खैर, मेरा सवाल एक गूंगे उपयोगकर्ता के दृष्टिकोण से पूछा गया है जो पैकेज मैनेजर को "सामान प्राप्त करने" के लिए उपयोग कर रहा है। यह बिल्कुल भी निश्चित नहीं है कि मैं "चीजों को थोड़ा गलत होने पर [अपने] स्व को पता लगाने में सक्षम हो जाऊंगा।" फिर भी, अतिरिक्त स्पष्टीकरण के लिए वैसे भी अपवोट करें। धन्यवाद!
रिच

1
MacPorts का उपयोग न करने के अच्छे कारणों के रूप में / usr / लोकल, देखें trac.macports.org/wiki/FAQ#defaultprefix
20

3
@ रिम: उनके लिए अच्छे कारण - यह उनकी बग-ट्रैकिंग सुविधा और उपयोगकर्ता की मशीन पर इंस्टॉल की सादगी के बीच बहुत अधिक व्यापार है। मुझे बाद की परवाह है।
चार्ल्स स्टीवर्ट

1
चीजों की संख्या जो गलत हो सकती है क्योंकि किसी ने (या कुछ) ने $ lib की एक प्रति स्थापित की है, /usr/localवह अंतहीन है। आर्किटेक्चर, संस्करण, कॉन्फ़िगर की गई विशेषताएं और झंडे, आंशिक स्थापना, सुरक्षा मुद्दों के साथ पुरानी स्थापना, और और समस्याओं का कारण बनेंगे। यदि आप जानते हैं कि आप क्या कर रहे हैं, तो निश्चित रूप से आगे बढ़ें, लेकिन इसके बारे में बग दर्ज न करें। अनुभव से पता चलता है कि लोग वैसे भी बग दर्ज करते हैं, और यही कारण है कि ट्रेस मोड ( -t, नीचे देखें) मौजूद है और परहेज /usr/localडिफ़ॉल्ट सिफारिश क्यों है।
neverpanic

@neverpanic - सब कुछ / usr / स्थानीय को संकलित करने के जोखिमों के बारे में मेरी राय जब से मैंने यह उत्तर लिखा है, ज्यादातर इसलिए कि ठेठ ओपन-सोर्स प्रोजेक्ट्स की जटिलता का निर्माण सिर्फ ऊपर और ऊपर जाता है, और ऑटोकॉनफ मुद्दों को कोई आसान नहीं हो रहा है सॉर्ट आउट: कम से कम, "पैरानॉयड पर कगार" अनुचित है। मैं अभी भी मैकपोर्ट्स के "निजी बिल्ड ब्रह्मांड" दृष्टिकोण को पसंद नहीं करता हूं, और यह इस बात पर बल देता है कि मेलिंग-लिस्ट इंटरैक्शन की सादगी एकमात्र ऐसी सादगी नहीं है, जिसके बारे में अंत उपयोगकर्ता को चिंता करनी चाहिए। मैं अपने उत्तर के लिए केवेट जोड़ूंगा।
चार्ल्स स्टीवर्ट

6

के अनुसार MacPorts पूछे जाने वाले प्रश्न :

ध्यान दें कि 2.3.0 से शुरू होकर, MacPorts पोर्ट की बिल्ड सिस्टम से स्वचालित रूप से / usr / लोकल (और एक अन्य सभी पोर्ट पर निर्भर नहीं करता है) को छिपा सकता है। इस सुविधा को ट्रेस मोड कहा जाता है और पोर्ट के लिए -t ध्वज प्रदान करके सक्रिय किया जाता है, उदा

sudo port -t install <portname>

यह प्रासंगिक है क्योंकि Homebrew स्थापना पृष्ठ के अनुसार:

Homebrew प्रतियोगिता के सापेक्ष काम करने के कारणों में से एक है क्योंकि हम / usr / स्थानीय को स्थापित करने की सलाह देते हैं। अपने जोखिम पर एक और उपसर्ग उठाओ!

इसलिए, और थोड़े व्यक्तिगत अनुभव के साथ, मैं यह प्रमाणित करता हूं कि हमेशा MacPort इंस्टॉल के लिए -t ध्वज का उपयोग करके MacPorts और Homebrew सह-अस्तित्व की अधिकांश समस्याओं को एक ही सिस्टम पर रोकना चाहिए। अपने अंतिम प्रश्न को संबोधित करने के लिए: मुझे कोई कारण नहीं दिखता कि MacPorts की स्थापना रद्द करने से कोई समस्या क्यों होगी।


ध्यान रखें कि आप एक महत्वपूर्ण प्रदर्शन दंड से पीड़ित होंगे। लेकिन सामान्य तौर पर, यह लगभग सभी मामलों में काम करना चाहिए।
neverpanic

उस चेतावनी @ चेतावनी को इंगित करने के लिए धन्यवाद। मेरा मानना ​​है कि प्रदर्शन जुर्माना केवल पोर्ट को स्थापित करने के समय को प्रभावित करता है और स्थापित पोर्ट के किसी भी रनटाइम विशेषताओं पर कोई प्रभाव नहीं पड़ता है। सच?
webappzero

सही बात। यह केवल बिल्ड-टाइम समस्याओं को रोकता है, रन-टाइम समस्याओं को भी नहीं (लेकिन वे बहुत दुर्लभ हैं)।
कभी नहीं

व्यवहार में, मैं हमेशा ट्रेस ध्वज का उपयोग करने की इस आवश्यकता को याद करने में विफल रहा। इसलिए, मैं इस अभ्यास की अनुशंसा दूसरों से नहीं करता, जब तक कि आप आश्वस्त न हों कि आप लगातार उपयोग करेंगे।
webappzero

यदि आप इसे याद नहीं रखना चाहते हैं, तो आप हमेशा के लिए इसे पास करने के लिए एक रैपर स्क्रिप्ट या शेल उर्फ ​​(लेकिन सूडो और शेल उपनामों के बीच की बातचीत के बारे में जानते हैं) लिख सकते हैं। ध्यान दें कि El Capitan वर्तमान में ट्रेस मोड को तोड़ता है। मैं वर्कअराउंड पर काम कर रहा हूं।
neverpanic

4

एक कंप्यूटर पर होमब्रे को स्थापित करते समय, जहां मैं वर्षों से बंदरगाहों का उपयोग कर रहा हूं, यहां वह है जो मैं पढ़ सकता हूं:

Warning: You have MacPorts or Fink installed:
  /opt/local/bin/port

This can cause trouble. You don't have to uninstall them, but you may want to
temporarily move them out of the way, e.g.

  sudo mv /opt/local ~/macports

सावधान रहे!


1

webappzero के sudo port -t ...समाधान में मदद करनी चाहिए। सच कहूं तो, मैं मैकपार्ट्स (अब के लिए) के लिए डिफरेंस के साथ, एक बार में फिंक, मैकपोर्ट्स और होमब्रे सभी के साथ दौड़ता हूं, और केवल दो अन्य का उपयोग करके उन चीजों को स्थापित करता हूं जिन्हें मैं मैकपोर्ट से प्राप्त नहीं कर सकता। मैंने इस तरह बहुत कम कठिनाइयों में भाग लिया है, यहां तक ​​कि port -tचाल सीखने से पहले भी । यदि आप जटिल विकास और सर्वर वातावरण को बनाए रखने के लिए कई पैकेज प्रबंधकों का उपयोग करने की कोशिश कर रहे हैं, हालांकि, आप शायद कम से कम असुविधा की दुनिया के लिए हैं। एक को चुनें, और दूसरों से बचें लेकिन किसी ऐसी चीज के लिए जिसकी आपको सख्त जरूरत है, और मुख्य को पहले रास्ते में डाल दें।

अगर मैं जो सुन रहा हूं, वह Apple के बारे में / usr / Apple के अलावा स्थापित करने के लिए मना करने वाली चीज़ों के बारे में सच है (या शायद वे पहले से ही एल क्रैपिटन में ऐसा कर रहे हैं, जिसे मैं "अप" ग्रेडिंग से बचने के बाद तक और अधिक कर रहा हूं इसके साथ समस्याओं का समाधान किया जाता है), मुझे लगता है कि होमब्रेव के बाद कुछ और का उपयोग करने की चूक के बाद इस मुद्दे को कम कर दिया जाएगा - चाहे हम एप्पल के भारी-भरकम दृष्टिकोण से सहमत हों या नहीं।

अंत में, मुझे Apple के अपने बंदरगाहों को अपने पेड़ तक सीमित करने का विचार पसंद है, मैं बस चाहता हूं कि यह / usr / नहीं था। बल्कि मैं उनके स्वयं के सामान को अलग करने के लिए / प्रणाली / बिन / आदि, आदि का उपयोग करता था, इसलिए मैं इसे अप-टू-डेट, समुदाय-बनाए गए सॉफ़्टवेयर के साथ आसानी से बायपास कर सकता था।

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