कमांड लाइन में ppa / source से पैकेज कैसे सूचीबद्ध करें?


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
लेकेनस्टाइन

@Lekensteyn: मैंने apt-cache आउटपुट पार्सिंग जानकारी
जोड़ी

1
हमेशा एक अच्छा अजीब एक लाइनर जवाब प्यार करता हूँ। धन्यवाद!
TML

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.