আমি আমার সিস্টেমে অনেকগুলি পিপিএ থেকে প্যাকেজ ইনস্টল করেছি। আমি ইনস্টল হওয়া সমস্ত প্যাকেজগুলি তালিকাভুক্ত করতে চাই যা লঞ্চপ্যাড পিপিএ থেকে ইনস্টল করা আছে, সংগ্রহস্থলগুলি নয়।
কমান্ড-লাইনের মাধ্যমে এটি সম্ভব?
আমি আমার সিস্টেমে অনেকগুলি পিপিএ থেকে প্যাকেজ ইনস্টল করেছি। আমি ইনস্টল হওয়া সমস্ত প্যাকেজগুলি তালিকাভুক্ত করতে চাই যা লঞ্চপ্যাড পিপিএ থেকে ইনস্টল করা আছে, সংগ্রহস্থলগুলি নয়।
কমান্ড-লাইনের মাধ্যমে এটি সম্ভব?
উত্তর:
নিম্নলিখিত কমান্ডটি প্যাকেজের নাম এবং এর পিপিএ দেয় (যদি পিপিএ থেকে ইনস্টল করা থাকে):
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}
নীতিতে প্রি 500 এর সাথে কোনও পিপিএ পাওয়া গেলে প্যাকেজ এবং পিপিএ মুদ্রিত হয় এমন লুপ isaptitude
সক্রিয় পিপিএ-র জন্য ইনস্টল করা প্যাকেজগুলির নীচে কমান্ডটি দেখায় sources.list
।
aptitude search '?narrow(?installed, ~Oppa)'
তথ্যসূত্র: প্রবণতা - অনুসন্ধান শব্দ উল্লেখ
aptitude
+1 এর আরেকটি দুর্দান্ত ক্ষমতা
এই উত্তর এবং এই পোস্টের সাথে সামঞ্জস্য রেখে , আপনি নিম্নলিখিত ব্যাশ কোডটি ব্যবহার করে আপনার সিস্টেমে ইনস্টল করা সমস্ত পিপিএ থেকে সমস্ত প্যাকেজগুলির একটি তালিকা পেতে পারেন:
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
এখন, পিপিএগুলি থেকে ইনস্টল করা সমস্ত প্যাকেজগুলির একটি তালিকা পেতে এই দুটি আইডিয়াটিতে যোগদান করুন:
(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
একটি পিপিএ থেকে ইনস্টল করা হয় না; এটির একটি পৃথক সংগ্রহস্থল রয়েছে।
সিনাপটিক ইনস্টল করুন । এরপরে আপনি "উত্স" বা অন্য কোনও কাস্টম ফিল্টার দ্বারা প্যাকেজগুলি ব্রাউজ করতে পারেন।