सिर्फ कोड
aptitude search '~i !~M' -F '%p' --disable-columns | sort -u > currentlyinstalled.txt
wget -qO - http://mirror.pnl.gov/releases/precise/ubuntu-12.04.3-desktop-amd64.manifest \
| cut -f1 | sort -u > defaultinstalled.txt
comm -23 currentlyinstalled.txt defaultinstalled.txt
व्याख्या
इस समस्या के बारे में सोचने का एक तरीका यह है कि इसे तीन भागों में तोड़ दिया जाए:
- मुझे आश्रितों के रूप में स्थापित पैकेजों की सूची कैसे मिलेगी?
- मुझे डिफ़ॉल्ट रूप से स्थापित पैकेजों की सूची कैसे मिलेगी?
- मैं इन दो सूचियों के बीच अंतर कैसे प्राप्त कर सकता हूं?
मुझे आश्रितों के रूप में स्थापित पैकेजों की सूची कैसे मिलेगी?
निम्नलिखित कमांड मेरे सिस्टम पर काम करती है:
$ aptitude search '~i !~M' -F '%p' --disable-columns | sort -u > currentlyinstalled.txt
इसी तरह के दृष्टिकोण लिंक में पाए जा सकते हैं जो गिल्स ने प्रश्न के लिए एक टिप्पणी के रूप में पोस्ट किया था। कुछ स्रोतों का दावा है कि यह केवल तभी काम करेगा जब आप संकुल को स्थापित करने के लिए उपयुक्तता का उपयोग करेंगे; हालाँकि, मैंने पैकेजों को स्थापित करने के लिए लगभग कभी भी उपयोग नहीं किया और पाया कि यह अभी भी काम कर रहा है। --disable-columns
रोकता है रिक्त स्थान है कि तुलना में नीचे में बाधा आएगी साथ पैकेज के नाम की गद्दी लाइनों से योग्यता। | sort -u
प्रकार फ़ाइल और डुप्लिकेट को हटा। यह अंतिम चरण को बहुत आसान बनाता है।
मुझे डिफ़ॉल्ट रूप से स्थापित पैकेजों की सूची कैसे मिलेगी?
नोट: यह खंड एक 'गलत रास्ते' से शुरू होता है, जो मुझे लगता है कि उदाहरण है। कोड का दूसरा टुकड़ा वह है जो काम करता है।
यह थोड़ा पेचीदा मामला है। मैंने शुरू में सोचा था कि एक अच्छा सन्निकटन उन सभी संकुल का होगा जो मेटा-संकुल के निर्भरताएँ हैं ubuntu-minimal, ubuntu-standard, ubuntu-desktop, और विभिन्न लिनक्स कर्नेल संबंधित पैकेज। Google खोजों पर कुछ परिणाम इस दृष्टिकोण का उपयोग करने के लिए लग रहा था। इन निर्भरताओं की सूची प्राप्त करने के लिए, मैंने पहली बार निम्नलिखित कोशिश की (जो काम नहीं किया):
$ apt-cache depends ubuntu-desktop ubuntu-minimal ubuntu-standard linux-* | awk '/Depends:/ {print $2}' | sort -u
यह कुछ पैकेजों को छोड़ देता है जो मुझे पता है कि डिफ़ॉल्ट रूप से आना था। मेरा अब भी मानना है कि अगर किसी व्यक्ति को मेटापैक की सही सूची का निर्माण करना है तो यह तरीका काम करना चाहिए।
हालांकि, ऐसा लगता है कि उबंटू दर्पण में एक "मैनिफ़ेस्ट" फ़ाइल होती है जिसमें डिफ़ॉल्ट इंस्टॉल में सभी पैकेज होते हैं। Ubuntu 12.04.3 के लिए यहाँ प्रकट होता है:
http://mirror.pnl.gov/releases/precise/ubuntu-12.04.3-desktop-amd64.manifest
यदि आप इस पृष्ठ (या आपके करीब दर्पण का पृष्ठ) के माध्यम से खोज करते हैं:
http://mirror.pnl.gov/releases/precise/
आपको ".manifest" फ़ाइल खोजने में सक्षम होना चाहिए जो आपके द्वारा उपयोग किए जा रहे संस्करण और आर्किटेक्चर से मेल खाती है। सिर्फ पैकेज के नाम निकालने के लिए मैंने ऐसा किया:
wget -qO - http://mirror.pnl.gov/releases/precise/ubuntu-12.04.3-desktop-amd64.manifest | cut -f1 | sort -u > defaultinstalled.txt
सूची संभवतः पहले से ही सॉर्ट की गई थी और अद्वितीय थी, लेकिन मैं यह सुनिश्चित करना चाहता था कि अगले चरण को आसान बनाने के लिए इसे ठीक से सॉर्ट किया गया था। मैं तो उत्पादन में डाल दिया defaultinstalled.txt
।
मैं इन दो सूचियों के बीच अंतर कैसे प्राप्त कर सकता हूं?
यह सबसे आसान हिस्सा है क्योंकि अधिकांश यूनिक्स जैसी प्रणालियों में ऐसा करने के लिए कई उपकरण हैं। comm
उपकरण यह करने के लिए कई मायनों में से एक है:
comm -23 currentlyinstalled.txt defaultinstalled.txt
यह उन पंक्तियों की सूची को प्रिंट करना चाहिए जो पहली फ़ाइल के लिए अद्वितीय हैं। इस प्रकार, इसे स्थापित संकुल की एक सूची मुद्रित करनी चाहिए जो डिफ़ॉल्ट रूप से स्थापित नहीं है।
aptitude search '~i!~M' -F %p
है?