मैंने अपने सिस्टम पर कई पीपीए से कई पैकेज स्थापित किए। मैं सभी स्थापित पैकेजों को सूचीबद्ध करना चाहता हूं जो लॉन्चपैड पीपीए से स्थापित हैं, न कि रिपॉजिटरी।
क्या यह कमांड-लाइन के माध्यम से संभव है?
मैंने अपने सिस्टम पर कई पीपीए से कई पैकेज स्थापित किए। मैं सभी स्थापित पैकेजों को सूचीबद्ध करना चाहता हूं जो लॉन्चपैड पीपीए से स्थापित हैं, न कि रिपॉजिटरी।
क्या यह कमांड-लाइन के माध्यम से संभव है?
जवाबों:
निम्न कमांड पैकेज का नाम और उसका ppa देता है (यदि ppa से संस्थापित किया जाता है):
apt-cache policy $(dpkg --get-selections | grep -v deinstall$ | awk '{ print $1 }') | perl -e '@a = <>; $a=join("", @a); $a =~ s/\n(\S)/\n\n$1/g; @packages = split("\n\n", $a); foreach $p (@packages) {print "$1: $2\n" if $p =~ /^(.*?):.*?500 http:\/\/ppa\.launchpad\.net\/(.*?)\s/s}'
विवरण:
dpkg --get-selections
के बाद केवल स्थापित संकुल देता है grep -v deinstall$
awk '{ print $1 }'
केवल पैकेज का नाम देता हैperl -e '@a = <>; $a=join("", @a)'
द्वारा लौटाई गई सभी पंक्तियों को संक्षिप्त करता है apt-cache policy
$a =~ s/\n(\S)/\n\n$1/g;
प्रत्येक पैकेज अनुभाग के बीच एक नई रेखा जोड़ता है@packages = split("\n\n", $a);
एक पर्ल सरणी है जिसमें सभी पैकेज इन्फोस, एक पैकेज प्रति आइटम है।foreach $p (@packages) {print "$1: $2\n" if $p =~ /^(.*?):.*?500 http:\/\/ppa\.launchpad\.net\/(.*?)\s/s}
एक लूप है, जहां पैकेज और ppa मुद्रित होते हैं, यदि पॉलिसी में prio 500 के साथ एक ppa मिलता है।aptitude
नीचे दिए गए आदेश सक्रिय पीपीए के लिए स्थापित पैकेजों की सूची दिखाता है sources.list
।
aptitude search '?narrow(?installed, ~Oppa)'
संदर्भ: योग्यता - खोज शब्द संदर्भ
aptitude
+1 की एक और कूल क्षमता
इस उत्तर और इस पोस्ट के अनुसार , आप निम्नलिखित सिस्टम कोड का उपयोग करके अपने सिस्टम पर स्थापित सभी PPA से सभी पैकेजों की एक सूची प्राप्त कर सकते हैं:
for APT in $(find /etc/apt/ -name \*.list); do
grep -o "^deb http://ppa.launchpad.net/[a-z0-9\-]\+/[a-z0-9\-]\+" $APT | while read ENTRY ; do
USER=$(echo $ENTRY | cut -d/ -f4)
PPA=$(echo $ENTRY | cut -d/ -f5)
awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' /var/lib/apt/lists/*$USER*$PPA*Packages
done
done
और इस उत्तर के अनुसार , आप अपने सिस्टम में सभी इंस्टाल किए गए पैकेजों की एक सूची प्राप्त कर सकते हैं:
dpkg --get-selections | grep -v deinstall | cut -f1
अब, PPAs से स्थापित सभी पैकेजों की सूची प्राप्त करने के लिए इन दो विचारों को शामिल करें:
(for APT in $(find /etc/apt/ -name \*.list); do
grep -o "^deb http://ppa.launchpad.net/[a-z0-9\-]\+/[a-z0-9\-]\+" $APT | while read ENTRY ; do
USER=$(echo $ENTRY | cut -d/ -f4)
PPA=$(echo $ENTRY | cut -d/ -f5)
awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' /var/lib/apt/lists/*$USER*$PPA*Packages
done
done; dpkg --get-selections | grep -v deinstall | cut -f1) | sort | awk 'dup[$0]++ == 1'
apt-cache
उदाहरण के लिए, स्थापित पैकेज के स्रोत का उपयोग करके जाँच की जा सकती है
$ apt-cache policy oracle-java7-installer
oracle-java7-installer:
Installed: 7u51-0~webupd8~7
Candidate: 7u51-0~webupd8~7
Version table:
*** 7u51-0~webupd8~7 0
500 http://ppa.launchpad.net/webupd8team/java/ubuntu/ precise/main i386 Packages
100 /var/lib/dpkg/status
आउटपुट apt-cache policy <package_name>
में स्रोत होता है।
पीपीए से स्थापित पैकेजों की सूची प्राप्त करने के लिए व्यक्ति निम्नलिखित स्क्रिप्ट का उपयोग कर सकता है।
#!/bin/bash
echo "List of packages which are not installed from Ubuntu repository"
for i in `dpkg -l | grep "^ii" | awk '{print $2}'`
do
j=`apt-cache policy "$i" | grep "ppa.launchpad.net"`
if [ $? -eq 0 ]; then
echo "$i"
#echo "$i $j"
fi
done
gir1.2-syncmenu-0.1 500 http://ubuntu.univ-nantes.fr/ubuntu/ saucy/main amd64 Packages
google-chrome-stable
में एक पीपीए से स्थापित नहीं है; इसका सिर्फ एक अलग भंडार है।
अन्तर्ग्रथनी स्थापित करें । फिर आप "मूल" या किसी अन्य कस्टम फ़िल्टर द्वारा संकुल ब्राउज़ कर सकते हैं।