কমান্ড লাইনে পিপিএ / উত্স থেকে প্যাকেজগুলি কীভাবে তালিকাভুক্ত করবেন?


40

আমি একটি উত্স থেকে সমস্ত ফাইল তালিকাভুক্ত করতে চাই, কমান্ড লাইন থেকে extras.ubuntu.com বলুন । এর জন্য হুকুম কী?

dpkg --list সমস্ত ফাইল বা কেবল ফাইলের নাম তালিকাভুক্ত করে।


উত্তর:


37

/var/lib/apt/lists/শেষ হওয়ার সাথে সাথে সম্পর্কিত ফাইলটি সন্ধান করুন Packagesএবং এই আদেশটি সম্পাদন করুন:

# example for deb http://security.ubuntu.com/ubuntu natty-security multiverse
awk '$1 == "Package:" { print $2 }' /var/lib/apt/lists/security*multiverse*Packages

যাইহোক, আমার extras.ubuntu.com_ubuntu_dists_natty_main_binary-i386_Packagesখালি।

সম্পাদনা

আপনি আউটপুটও পার্স করতে পারেন apt-cache। এই স্ক্রিপ্ট সার্ভার এবং রেপো তথ্য সহ সমস্ত প্যাকেজ তালিকাভুক্ত করে:

#!/bin/bash

apt-cache policy $(dpkg -l | awk 'NR >= 6 { print $2 }') |
  awk '/^[^ ]/    { split($1, a, ":"); pkg = a[1] }
    nextline == 1 { nextline = 0; printf("%-40s %-50s %s\n", pkg, $2, $3) }
    /\*\*\*/      { nextline = 1 }'

আউটপুট সুবিধামত বাছাই করা আপনি যে ইনফোগুলি সন্ধান করছেন তা পেতে পারেন।


নাইস, আমি আসলে ফাইল পার্স চিন্তা না করে থাকেন, আমি একটি ভালো উপায় আউটপুট পার্স করতে খুঁজছেন ছিল apt-cache policy '.*'। এই প্যাকেজ ফাইলটি পুনরুদ্ধার করা হয়েছে http://extras.ubuntu.com/ubuntu/dists/natty/main/binary-amd64/, এই Packages.*ফাইলগুলি ব্যবহার করে gunzipবা সঙ্কুচিত করা যেতে পারে bunzip2
লেকেনস্টেইন

@ লেকেনস্টেইন: আমি অ্যাপটি-ক্যাশে আউটপুট
পার্সিংয়ের

1
সর্বদা একটি সুন্দর উত্তেজক ওয়ান-লাইন উত্তর পছন্দ করুন। ধন্যবাদ!
টিএমএল

8

আমি কেবল সার্ভার-সাইডে সরাসরি যাচাই করতাম, তার মতো:

$ curl -s http://extras.ubuntu.com/ubuntu/dists/maverick/main/binary-i386/Packages.gz |
  gzip -d | grep Package
Package: news
Package: suspended-sentence

2

আমি এর জন্য একটি ভয়ঙ্কর স্ক্রিপ্ট তৈরি করেছি:

#!/bin/bash
clear
##array aufbauen
declare -a repoList=()
for i in $(ls /var/lib/apt/lists/ | grep _Packages)
do
    #echo $i
    repoList=("${repoList[@]}" "$i")
done

repoAnzahl=${#repoList[@]}
echo "Anzahl der Repos: " $repoAnzahl

for ((i=0;$i<$repoAnzahl;i++))
do
    if [[ "${repoList[$i]}" =~ "archive.ubuntu" ]]
    then
    rname=${repoList[$i]##*archive.ubuntu}
    echo "$i RepoName: " "${rname%%_binary*}"
    elif [[ "${repoList[$i]}" =~ "ubuntu" ]]
    then
    echo "$i RepoName: " "${repoList[$i]%%_ubuntu*}"
    else
    echo "$i RepoName: " "${repoList[$i]%%_dist*}"
    fi
done

read -p "Gib die RepoNummer ein: " repoNummer

packages=()
for i in $(cat /var/lib/apt/lists/${repoList[$repoNummer]} | grep Package)
do
    if ! [[ "$i" =~ "Package" ]]
    then
    packages=("${packages[@]}" "$i")
    fi
done

paketAnzahl=${#packages[@]}
echo "Anzahl der pakete: " $paketAnzahl

function listPackages () {
    for ((i=0;$i<$paketAnzahl;i++))
    do
    echo ${packages[$i]}
    done
}

if test $paketAnzahl -gt 20
then
    listPackages | less
else
    listPackages
fi

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