यहां वह स्क्रिप्ट है जो केवल वर्तमान में स्थापित शीर्ष स्तर के पैकेजों को प्रिंट करता है , जहां "टॉप लेवल पैकेज" को एटीपी पैकेज के रूप में परिभाषित किया गया है, जिस पर कोई अन्य एटीपी पैकेज निर्भर नहीं करता है। यदि इस तरह के शीर्ष स्तर के प्रोग्राम atp या एक पैकेज मैनेजर जैसे कि synaptic द्वारा स्थापित किए गए थे, तो उन्हें उपयोगकर्ता द्वारा मैन्युअल रूप से चुना गया था।
#!/bin/sh
NumDaysAgo=18
find /var/lib/dpkg/info -name "*.list" -mtime -$NumDaysAgo \
-exec stat -c $'%y\t%n' {} \; | \
sed -e 's,/var/lib/dpkg/info/,,' -e 's,\.list,,' | \
sort -r | \
while read Date Time Xxx Pkg
do
lncnt=$(apt-cache --installed rdepends $Pkg | wc -l)
if [ $lncnt -eq "2" ]
then echo "$Date $Time $Pkg"
fi
done
echo "JOB COMPLETED: $BASH_SOURCE"
संकुल को रिवर्स ऑर्डर में इस धारणा के तहत मुद्रित किया जाता है कि उपयोगकर्ता को नई जानकारी जल्द से जल्द चाहिए, और क्योंकि कार्यक्रम धीमा है।
कार्यक्रम का प्रवाह:
- कार्यक्रम पहले फ़ाइलनाम के तहत पढ़कर सभी स्थापित पैकेजों की सूची में इकट्ठा होता है
/var/lib/dpkg/info/
। फ़ाइल मॉड समय स्थापना समय है।
- उस सूची को उल्टे क्रम में क्रमबद्ध किया जाता है।
- प्रत्येक स्थापित पैकेज के लिए
$Pkg
, apt-cache rdepends $Pkg
रिवर्स-निर्भरता का अनुरोध करने के लिए एक कॉल $Pkg
। यदि कोई निर्भरता नहीं है, तो यह एक शीर्ष स्तर का पैकेज है और पैकेज की जानकारी मुद्रित की जाती है: दिनांक समय पैकेजेन
टिप्पणियाँ:
- स्क्रिप्ट आउटपुट स्वरूप पर निर्भर करता है
apt-cache rdepends $Pkg
जिसका उद्देश्य मानव आंखों के लिए था और भविष्य के संस्करणों में बदल सकता है।
- / Var / lib / dpkg / info / underix के पार्ट पार्ट फाइलिंग के लिए कोड इस unix.stackexexhange पोस्ट से आया है
। जैसा कि उस पोस्टर 'मिकेल' ने बताया है,
dpgk
इतिहास लॉगफ़ाइल्स विश्वसनीय नहीं हैं क्योंकि उन्हें एक निश्चित मात्रा तक पहुँचने के बाद घुमाया जाएगा।
- के लिए मैन पेज
apt-chache
- कॉल
apt-cache rdepends ...
बहुत ही धीमी गति से होता है क्योंकि प्रत्येक कॉल की गणना सभी निर्भरताओं के माध्यम से होती है। इसलिए उपर्युक्त स्क्रिप्ट उपयोगकर्ता को यथासंभव तत्काल संतुष्टि प्रदान करने के लिए नवीनतम इंस्टॉल से शुरू होती है।
--installed
ध्वज के बाद apt-cache
जांच करता है कि dpkg-इंस्टॉल किए गए पैकेज भी उपयुक्त से स्थापित कर रहे हैं। यदि उपयोगकर्ता या कोई अन्य इंस्टॉल सॉफ़्टवेयर ने बायपास किया और सीधे dpkg का उपयोग किया, तो यह संभव होगा। इस मामले का परीक्षण नहीं किया गया है, लेकिन मुझे लगता है कि कुछ ध्यान देने योग्य या तो मानक या त्रुटि आउटपुट में मुद्रित किया जाएगा
- आउटपुट में मैन्युअल रूप से चुने गए पैकेज शामिल नहीं हैं जो बाद में उच्च पैकेज द्वारा निर्भर हो गए। आउटपुट में वे पैकेज भी शामिल हो सकते हैं जो अन्य थर्ड पार्टी इंस्टॉल सॉफ़्टवेयर द्वारा apt के माध्यम से इंस्टॉल किए गए थे, और इसलिए वास्तव में मैन्युअल रूप से इंस्टॉल नहीं किए गए हैं। हालाँकि, यदि आउटपुट का उद्देश्य बैकअप
/home
डायरेक्टरी से रिस्टोर किए गए लिनक्स को स्थापित करने के लिए एक आधार के रूप में है, जिसमें थर्ड पार्टी सॉफ्टवेयर शामिल है, तो यह आउटपुट उपयुक्त होगा।
- कुछ पैकेज नामों में संस्करण संख्याएँ शामिल हैं, और कुछ नहीं। केवल तथ्य को जागरूकता लाने के लिए उल्लेख किया।