পিপিএ থেকে ইনস্টল হওয়া সমস্ত প্যাকেজ কীভাবে তালিকাভুক্ত করবেন?


23

আমি আমার সিস্টেমে অনেকগুলি পিপিএ থেকে প্যাকেজ ইনস্টল করেছি। আমি ইনস্টল হওয়া সমস্ত প্যাকেজগুলি তালিকাভুক্ত করতে চাই যা লঞ্চপ্যাড পিপিএ থেকে ইনস্টল করা আছে, সংগ্রহস্থলগুলি নয়।

কমান্ড-লাইনের মাধ্যমে এটি সম্ভব?



নোট অন্য একটি।
অবিনাশ রাজ

1
কমান্ড লাইন ইউটিলিটি নয়, তবে ওয়াই পিপিএ পরিচালক খুব দরকারী । পিপিএগুলি থেকে প্যাকেজগুলি তালিকাভুক্ত, ইনস্টল এবং সরিয়ে দেয়।
জোস

উত্তর:


23

নিম্নলিখিত কমান্ডটি প্যাকেজের নাম এবং এর পিপিএ দেয় (যদি পিপিএ থেকে ইনস্টল করা থাকে):

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 এর সাথে কোনও পিপিএ পাওয়া গেলে প্যাকেজ এবং পিপিএ মুদ্রিত হয় এমন লুপ is

সংক্ষিপ্ত উত্তর / কোড, কার্যকর করার জন্য দীর্ঘ সময়
রাদু রেদানু

@ অবিনাশ: আপনি কি আমার উত্তর পরীক্ষা করেছেন? যদি তাই হয় আপনি এটি গ্রহণ বিবেচনা করতে পারেন? ধন্যবাদ।
সিলভাইন পাইনাউ

7

aptitudeসক্রিয় পিপিএ-র জন্য ইনস্টল করা প্যাকেজগুলির নীচে কমান্ডটি দেখায় sources.list

aptitude search '?narrow(?installed, ~Oppa)'

তথ্যসূত্র: প্রবণতা - অনুসন্ধান শব্দ উল্লেখ


1
aptitude +1 এর আরেকটি দুর্দান্ত ক্ষমতা
রাভেক্সিনা

3

এই উত্তর এবং এই পোস্টের সাথে সামঞ্জস্য রেখে , আপনি নিম্নলিখিত ব্যাশ কোডটি ব্যবহার করে আপনার সিস্টেমে ইনস্টল করা সমস্ত পিপিএ থেকে সমস্ত প্যাকেজগুলির একটি তালিকা পেতে পারেন:

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'

3

ইনস্টল করা প্যাকেজের উত্সটি 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

1
আপনি কোনও আলাদা আয়না নির্বাচন করলে এটি কাজ করে না। উদাহরণস্বরূপ আমার কাছে রয়েছেgir1.2-syncmenu-0.1 500 http://ubuntu.univ-nantes.fr/ubuntu/ saucy/main amd64 Packages
সিলভাইন পাইনাউ

এই ক্ষেত্রে google-chrome-stableএকটি পিপিএ থেকে ইনস্টল করা হয় না; এটির একটি পৃথক সংগ্রহস্থল রয়েছে।
রাদু রেডানু

ঠিক আছে, আমি এটা দেখেছি। তবে আপনি সত্যিই খারাপ উদাহরণ নিয়ে এসেছিলেন যা নবজাতক ব্যবহারকারীদের ভাবতে সক্ষম করতে পারে যে কোনও প্যাকেজ যদি উবুন্টু সংগ্রহস্থল থেকে না হয়, তবে প্যাকেজটি পিপিএ থেকে from ওপির প্রশ্ন পিপিএ নিয়ে about
রাদু রেডানু

@ রাদুআরেদানু আমি আপনার পয়েন্ট পেয়েছি এবং আমার পোস্ট সম্পাদনা করেছি। আপনি একেবারে সঠিক।
সৌরভসি

এখন আরও ভাল, মৃত্যুদন্ড কার্যকর করার সময় নিয়ে কোনও সমস্যা থাকলেও যা বাস্তবের চেয়ে দীর্ঘস্থায়ী।
রাদু রেদানু

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.