यह कैसे निर्धारित किया जाए कि क्या पैकेज कमांड लाइन से मेटा-पैकेज है?


14

मैं यह कैसे निर्धारित कर सकता हूं कि क्या पैकेज कमांड लाइन से मेटा-पैकेज है, संभवतः apt-get, aptitude या apt-cache के माध्यम से?

मैंने कोशिश की है:

apt-cache show texlive-full
apt-cache showpkg texlive-full

लेकिन जिस तरह से मैं बता सकता हूं कि यह पैकेज मेटा है "एन-डिस्क्रिप्शन" फ़ील्ड को पढ़कर।

क्या ऐसा करने का कोई अधिक स्वचालित तरीका है, जो मुझे हां / ना में कोई प्रतिक्रिया देगा, या कम से कम एक क्षेत्र होगा जैसे कि "एन-विवरण" इसके लिए समर्पित है?


1
इस तथ्य के अलावा कि यह प्रश्न और उत्तर काफी दिलचस्प हैं, आप यह क्यों जानना चाहते हैं?
जो

1
मैं apt-get के साथ सामान स्थापित कर रहा था, और मैंने देखा कि अगर मैं एक मेटापैकेज (टेक्सलाइव-फुल) स्थापित करता हूं, तो वह उन आश्रितों को स्थापित करता है, जो मैं चाहता हूं, लेकिन अगर मैं मेटापैकेज को अनइंस्टॉल करता हूं, तो निर्भरताएं वहीं रहती हैं (apt-get install texlive-full) apt-get purge टेक्सलीव-पूर्ण; apt-get ऑटोरेमोव)। तब मैंने पाया कि यह केवल रूपक विचार मंथन के लिए मामला है ।ubuntu.com/idea/17785 । दूसरी ओर योग्यता अनावश्यक निर्भरता को एक रूपक से दूर नहीं करती है।
सिरो सेंटिल्ली 新疆 改造 iro i 事件 '

जवाबों:


7

रूपक की कोई औपचारिक परिभाषा नहीं है। अनौपचारिक परिभाषा यह है कि एक रूपक वह है जो केवल अपनी निर्भरता के लिए स्थापित किया जाना है और इसमें स्वयं की कोई उपयोगी फ़ाइल नहीं है।

आप एक मेटापैकेज को एक पैकेज के रूप में परिभाषित कर सकते हैं जिसमें कोई फ़ाइल नहीं है। पैकेज डेटाबेस से इसे निर्धारित करने का कोई तरीका नहीं है। आप फ़ाइल डेटाबेस का उपयोग कर सकते हैं और जांच सकते हैं कि पैकेज में केवल निर्देशिकाएं हैं (ऐसे कई पैकेजों में कुछ निर्देशिकाएं हैं)। वास्तव में, अधिकांश मेटापैकेज में कुछ फाइलें होती हैं /usr/share/doc/<package name>: एक copyrightफाइल, एक चैंज, कभी-कभी कुछ और। यहां एक अनुमान लगाया गया है जो केवल फ़ाइलों में /usr/share/doc/<some directory>( जिसमें उपनिर्देशिका में नहीं) और प्रमुख निर्देशिकाओं के रूप में एक रूपक को परिभाषित करता है :

if ! apt-file -F list $package | grep -qvE '^/(usr(/share(/doc(/[^/]*(/[^/]*)?)?)?)?)?$'; then
  echo "$package looks like a metapackage"
fi

एक अन्य दृष्टिकोण पैकेज टैग के साथ देखना है debtags। ऐसे कई टैग हैं जो आमतौर पर रूपक पर उपयोग किए जाते हैं।

debtags tag ls $package | grep -x -e 'role::metapackage' -e 'role::dummy' -e 'special::meta'

एक अन्य दृष्टिकोण छोटे आकार के पैकेजों की तलाश करना है। प्रत्येक निर्देशिका 4 केबी के रूप में गिना जाता है, इसलिए थ्रेशोल्ड उठाते समय तदनुसार योजना बनाएं (फिर से, यह एक अनुमान है)।

aptitude -F '%I %p' search "~n^$package\$"

परावर्तन पर, मुझे आश्चर्य है कि यदि आप मेटापैकेज के बजाय आभासी पैकेज का मतलब है । वर्चुअल पैकेज वास्तव में पैकेज नहीं हैं, लेकिन Provides:खेतों में उपयोग किए जाने वाले पैकेज के नाम हैं। आप उन्हें सूचीबद्ध कर सकते हैं aptitude search '~v'apt-cache showएक डिस्प्ले पर चलना "पैकेज 'zcav से संस्करणों का चयन नहीं कर सकता क्योंकि यह पूरी तरह से आभासी है"। रनिंग aptitude showउन पैकेजों को सूचीबद्ध करता है जो इसे प्रदान करते हैं। वर्चुअल पैकेज दिखाने का एक सुविधाजनक तरीका यह है apt-cache: यह एक आभासी पैकेज के लिए एक लाइन को प्रिंट करता है और एक आभासी पैकेज के लिए संभावित रूप से कई लाइनें (प्रत्येक प्रदाता के लिए एक) - आप बता सकते हैं कि क्या पैकेज एक प्रदाता होने पर भी आभासी है? क्योंकि प्रदाता का नाम अलग है।

apt-cache -n search "^$package\$"

उन तरीकों के लिए धन्यवाद: मैं देनदार के बारे में नहीं जानता था! इसके अलावा, मैंने कहीं पढ़ा है कि जब आप aap-get के साथ एक मेटापैकेज स्थापित करते हैं, तो यह बिल्कुल वैसा ही है जैसे आपने व्यक्तिगत रूप से प्रत्येक निर्भरता को स्थापित किया था, जिसका अर्थ है कि मूल पैकेज को हटाने से इसकी निर्भरता तुरंत नहीं हटेगी, जबकि सामान्य पैकेजों को हटा दें। स्थापित निर्भरताएँ दूर करें। क्या ये सच है? यदि हां, तो अंतर-अंतर कैसे बता सकता है? इसका शोषण भी किया जा सकता है ... (यह भी प्रतीत होता है कि एपेटिट्यूड को परवाह नहीं है कि इसकी मेटा है या नहीं, क्या यह सच है?)
सिरो सेंटिल्ली 新疆 too too too

@cirosantilli स्वचालित रूप से निर्भरता को हटाने की विशेषता रूपक से संबंधित नहीं है। ऐसा इसलिए होता है क्योंकि यदि आप किसी पैकेज का स्पष्ट रूप से अनुरोध नहीं करते हैं, तो यह स्वचालित रूप से स्थापित के रूप में चिह्नित किया जाता है , और स्वचालित रूप से स्थापित पैकेज को चिह्नित किया जाता है यदि कोई पैकेज उस पर निर्भर नहीं होता है तो इसे हटा दिया जाता है। देखें apt-get autoremove, aptitude (un)markauto, Mयोग्यता इंटरैक्टिव इंटरफ़ेस में आदेश।
गिल्स एसओ- बुराई को रोकें '

@cirosantilli प्रतिबिंब पर, मुझे आश्चर्य है कि अगर आपके मन में क्या था, आभासी पैकेज थे, और मेटापैकेज नहीं थे? देखिये मेरा अपडेटेड जवाब।
गिल्स एसओ- बुराई को रोकें '

मैं वास्तव में आभासी पैकेजों के बारे में नहीं जानता था, लेकिन मुझे लगता है कि टेक्सिव-फुल वर्चुअल नहीं है क्योंकि एप्टी-कैश शो टेक्सलीव-फुल सामान्य परिणाम दिखाता है। फिर भी, मैंने ऐसा करने के बाद apt-get install texlive-full, apt-get purge texlive-full; apt-get autoremoveसभी स्थापित निर्भरताओं को नहीं हटाया। मैंने कहीं पढ़ा है कि ऐसा इसलिए है क्योंकि टेक्सवेल-फुल एक मेटैपैक था, और यह एक मेटैपैक का सामान्य व्यवहार था, लेकिन शायद यह गलत था। दूसरी तरफ योग्यता स्वचालित रूप से स्थापित निर्भरता को ठीक करने के लिए लग रहा था।
सिरो सेंटिल्ली 新疆 改造 i i 事件

2

आप प्रवेश करने का प्रयास कर सकते हैं

apt-cache search 'metapackage | meta-package'

जो आपको एक लंबी सूची देगा, और फिर उपयोग grepकरने के लिए कहेंगे, विज्ञान संबंधी सभी रूपक दिखाएगा

apt-cache search 'metapackage | meta-package' | grep -i science

यह एक लंबी सूची लौटाएगा (मैंने इसे यहां छोटा कर दिया है)

science-astronomy - Debian Science Astronomy packages
science-astronomy-dev - Debian Science Astronomy-dev packages
science-biology - Debian Science Biology packages
science-chemistry - Debian Science Chemistry packages
science-dataacquisition - Debian Science data acquisition packages
science-dataacquisition-dev - Debian Science data acquisition development packages
science-distributedcomputing - Debian Science Distributed Computing packages
science-electronics - Debian Science Electronics packages
science-electrophysiology - Debian Science packages for Electrophysiology
science-engineering - Debian Science Engineering packages
science-engineering-dev - Debian Science Engineering-dev packages
science-geography - Debian Science Geography packages
science-highenergy-physics - Debian Science High Energy Physics packages

आप विज्ञान के लिए किसी भी विकल्प का उपयोग कर सकते हैं, जैसे कि KDEसभी KDEरूपकों को खोजने के लिए ।

यह संभवतः आपके द्वारा किए जा सकने वाले सर्वश्रेष्ठ के बारे में है apt-cache, लेकिन यह उन अधिकांश मेटापैक्सों का पता लगाना चाहिए जिन्हें आप ढूंढना चाहते हैं। अगर आपको वह सब कुछ नहीं मिल रहा है, जिसकी आप तलाश कर रहे थे, तो सबसे सरल बात यह है कि मेटापेजेज सेक्शन में देखें Synaptic

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