रूपक की कोई औपचारिक परिभाषा नहीं है। अनौपचारिक परिभाषा यह है कि एक रूपक वह है जो केवल अपनी निर्भरता के लिए स्थापित किया जाना है और इसमें स्वयं की कोई उपयोगी फ़ाइल नहीं है।
आप एक मेटापैकेज को एक पैकेज के रूप में परिभाषित कर सकते हैं जिसमें कोई फ़ाइल नहीं है। पैकेज डेटाबेस से इसे निर्धारित करने का कोई तरीका नहीं है। आप फ़ाइल डेटाबेस का उपयोग कर सकते हैं और जांच सकते हैं कि पैकेज में केवल निर्देशिकाएं हैं (ऐसे कई पैकेजों में कुछ निर्देशिकाएं हैं)। वास्तव में, अधिकांश मेटापैकेज में कुछ फाइलें होती हैं /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\$"