जवाबों:
अकस्मात पत्तों को काटने से बचने के लिए जो आपके द्वारा अनुरोधित चीजें हो सकती हैं जिन्हें आपको port_cutleavesपैकेज स्थापित करना चाहिए फिर https://guide.macports.org/#using.common-tasks.keeplean पर चलें।sudo port_cutleaves
MacPorts 1.9.0 ने जोड़ाsqlite portdbformat और MacPorts 2.0.0 ने पुराने flatप्रारूप को छोड़ दिया । sqliteबंदरगाह डीबी प्रारूप नए प्रतिष्ठानों के लिए डिफ़ॉल्ट है; पुराने इंस्टॉलेशन जिन्हें 1.9.x पर अपग्रेड किया गया था वे flatफॉर्मेट 1 का उपयोग करना जारी रखेंगे । आप एक 1.9.x परिवर्तित कर सकते हैं flatकरने के लिए प्रणाली sqliteMacPorts 2.0 पर अपग्रेड करके या बदलकर प्रारूप portdbformatमें मूल्य /opt/local/etc/macports/macports.confऔर फिर एक पत्र जारी करने बंदरगाह जड़ (जैसे के रूप में आदेश sudo port installed)।
नए प्रारूप की विशेषताओं में से एक यह है कि यह "अनुरोधित" बनाम "अप्रतिबंधित" पोर्ट प्रतिष्ठानों का ट्रैक रखता है। एक निर्विवाद बंदरगाह वह है जो केवल इसलिए स्थापित किया गया था क्योंकि कुछ अन्य बंदरगाह उस पर निर्भर थे। leavesछद्म PORTNAME सभी अनिवेदित बंदरगाहों जिस पर कोई अन्य स्थापित बंदरगाह निर्भर करता है के लिए फैलता है। यदि आप मूल रूप से उन्हें अनइंस्टॉल नहीं करते हैं sudo port uninstall --follow-dependencies portname(जो आप चाहते हैं वही करेंगे, लेकिन केवल तभी जब आप किसी चीज़ की स्थापना रद्द करने के लिए उपयोग करना याद रखें)
उनमें से किसी को भी अनइंस्टॉल करने से पहले आपको अपने मौजूदा पत्तों की जांच करनी चाहिए।
port echo leaves
कुछ आम के पत्तों ( automake, gperf, libtool, pkgconfig) का निर्माण समय आम बंदरगाहों में से निर्भरता है, तो आप "अनुरोध" उन्हें (कर सकते हैं कर रहे हैं sudo port setrequested port1 port2 port3 …) उन्हें स्थापना रद्द करने से बचने के लिए सिर्फ उन्हें बाद में पुनः स्थापित करने के लिए।
आप किसी भी शेष पत्तियों को आसानी से अनइंस्टॉल कर सकते हैं:
sudo port uninstall leaves
नोट: अपने पत्तों की छंटाई करने से पहले, आप उन पुराने संस्करणों की स्थापना रद्द करना चाह सकते हैं जो अब "सक्रिय" नहीं हैं। यह कुछ और पत्तों को प्रकट कर सकता है (अर्थात पोर्ट जो कि स्थापित किए गए पोर्ट की निर्भरता हैं, लेकिन निष्क्रिय हैं):
sudo port uninstall inactive
रहे हैं कई वर्गों में MacPorts गाइड है कि यह भी उपयोग करने की प्रक्रिया का वर्णन leavesअनावश्यक बंदरगाहों की स्थापना रद्द करने के लिए।
while sudo port uninstall leaves; do :; doneकि स्वचालित करने के लिए।
sudo port uninstall --follow-dependents portnameगलत है, क्योंकि --follow-dependents"निर्दिष्ट पोर्ट पर निर्भर सभी पोर्ट को पुन: इंस्टॉल करेगा"। यहाँ सही विकल्प है --follow-dependencies, जो "निर्दिष्ट पोर्ट पर निर्भर सभी पोर्ट की पुन: स्थापना करेगा। यह उन निर्भरता को अनइंस्टॉल नहीं करेगा जो अनुरोध के रूप में चिह्नित हैं या जिनके अन्य आश्रित हैं।"
डॉक्स से :
स्थापना रद्द क्रिया स्थापित पोर्ट की स्थापना रद्द करेगी।
%% sudo port uninstall vile Noteदिए गए पोर्ट पर निर्भर करता है कि
‑‑follow‑dependenciesध्वज का उपयोग करें, इन पोर्ट की स्थापना रद्द करने के लिए भी । यह निर्भरता की स्थापना रद्द नहीं करेगा जो अनुरोध के रूप में चिह्नित हैं या जिनके पास अन्य आश्रित हैं।पोर्ट को अनइंस्टॉल करने से पहले दिए गए पोर्ट पर निर्भर सभी पोर्ट को फिर से अनइंस्टॉल करने के लिए, का उपयोग करें
‑‑follow‑dependents flag।यदि कोई पोर्ट किसी अन्य इंस्टॉल किए गए पोर्ट की निर्भरता है, तो इसे तब तक अनइंस्टॉल नहीं किया जाएगा, जब तक कि आप पहले निर्भर पोर्ट को नहीं हटाते हैं। इस व्यवहार को ओवरराइड करने के लिए, -f (बल) स्विच का उपयोग करें। यह स्पष्ट रूप से आश्रितों को तोड़ देगा। जब तक आप जानते हैं कि आप क्या कर रहे हैं, तब तक पोर्ट की स्थापना रद्द न करें।
%% sudo port -f uninstall vile
अंतिम अनुच्छेद में प्रमुख चेतावनी पर ध्यान दें। निर्भरताएं बिल्कुल वैसी ही हैं- निर्भरताएं- और अलग-अलग ऐप्स (वसीयत) को एक ही निर्भरता की आवश्यकता हो सकती है।
‑‑follow‑dependenciesबनाम ‑‑follow‑dependents; उद्धृत मार्ग दोनों का वर्णन करता है, लेकिन केवल पहला सवाल पर लागू होता है
एक पोर्ट और उसके आश्रितों को हटाने का आदेश है:
sudo port uninstall foo --follow-dependents
हालाँकि, यदि आप जिस पोर्ट को अनइंस्टॉल कर रहे हैं, उसमें आश्रित हैं तो यह -f(बल) ध्वज के बिना अनइंस्टॉल नहीं होगा ।
बेशक आपको MacPorts गाइड को विशेष रूप से अनइंस्टॉल गाइड सेक्शन में देखकर पढ़ना शुरू करना चाहिए ।
MacPorts की कंट्रिब डायरेक्टरी में एक स्क्रिप्ट भी है जिसे port_cutleaves कहा जाता है जिसे आप अनावश्यक निर्भरता को दूर करने के लिए चला सकते हैं: http://trac.macports.org/browser/contrib/ । यह आपको प्रत्येक से-अनइंस्टॉल किए गए पोर्ट के लिए पूछेगा और कुछ को रखने की अनुमति देता है, क्या आपको चाहिए।
मैंने पोर्ट क्लीनअप को स्वचालित करने के लिए कुछ स्क्रिप्ट लिखी हैं: https://github.com/vasi/macports-tools
'Macportsfoster' स्क्रिप्ट अनुरोधित-सूची में किसी भी चीज की आवश्यकता वाले सभी बंदरगाहों की सूची का उत्पादन नहीं करेगा, इस तरह का आदेश दिया गया है कि 'port $ $ (macportsfoster)' इन सभी को एक शॉट में हटा देगा।
मुझे लगता है कि अन्य उत्तर, और --follow-dependentsध्वज, जो आप चाहते हैं वह मत करो। यदि आप स्थापित करते हैं A, और Aआवश्यकता होती है B, तो अद्भुत पैकेज प्रबंधन प्रणालियों के लिए धन्यवाद, Bआपके लिए स्थापित किया जाएगा। आप अनइंस्टॉल कर सकते हैं Bऔर --follow-dependentsझंडे को इसके बारे में पता चल जाएगा A। लेकिन क्या होगा अगर आप अनइंस्टॉल करते हैं A, जो कि अधिक संभावना है, क्योंकि Aक्या आप मैन्युअल रूप से पहली जगह में स्थापित हैं? इस मामले में Bपीछे रह जाता है।
यदि आप फ़िंक का उपयोग करते हैं, तो डेबस्टर पैकेज आपके सिस्टम को साफ करने और अप्रयुक्त निर्भरता को हटाने के लिए डिज़ाइन किया गया है।
Debfoster आपको पैकेज से छुटकारा पाने में मदद करेगा (उदाहरण के लिए पुस्तकालय) आपके सिस्टम पर पीछे छूट जाता है जब आवश्यक प्रोग्राम को हटा दिया जाता है या उस संस्करण में अपग्रेड किया जाता है जिसमें निर्भरता नहीं होती है।
जबकि debfosterMacPorts के लिए काम नहीं करेगा, वहाँ के बंदरगाहों प्रतीत होता है debfoster, उदाहरण के लिए portsfoster, हालांकि यह बंद किया जा रहा है ...
MacPorts के लिए वर्तमान में कोई समाधान मौजूद नहीं है।
aptसिस्टम पर आधारित है जो डेबियन द्वारा उपयोग किया जाता है। मैं MacPorts का उपयोग नहीं करता, लेकिन मैंने किया fink install debfosterऔर यह मेरे लिए ठीक काम किया।
aptसिस्टम से संबंधित नहीं है और debफ़ाइलों का उपयोग नहीं करता है । MacPorts का विचार FreeBSD पोर्ट या NetBSD pkgsrc से संबंधित है, लेकिन कार्यान्वयन बहुत अलग है।