Wie bekomme ich eine Liste der Repositorys, die apt-get überprüft? [geschlossen]


133

Ich möchte eine Liste der Repos in der Datei "sources.list" sowie die in der Datei "sources.list.d /".

Kann ich diese Liste in einer Form erhalten, die zum Einrichten eines anderen Hosts geeignet ist, damit er dieselben Repos sieht?

Wie bestimme ich außerdem, welches Repo die Quelle eines installierten oder verfügbaren Pakets ist?


Antworten:


174

Es scheint am nächsten zu sein:

apt-cache policy

3
Hat jemand die Ausgabe verbessert (URLs zusammenfassen usw.) und möchte seinen Befehl hier teilen?
Lony

49

AFAIK Sie können apt nicht nach den aktuellen Quellen fragen, aber Sie können mit Shell-Tools tun, was Sie wollen.

Eine Liste der Repositorys abrufen:

grep -h ^deb /etc/apt/sources.list /etc/apt/sources.list.d/* >> current.repos.list

Anwenden der Liste:

apt-add-repository << current.repos.list

In Bezug auf das Abrufen von Repo von einem Paket (installiert oder verfügbar) reicht dies aus

apt-cache policy package_name |grep -m1 http| awk '{ print $2 " " $3 }'

Dadurch wird jedoch das Repository der neuesten verfügbaren Version dieses Pakets angezeigt. Möglicherweise verfügen Sie über mehr Repositorys für dasselbe Paket mit älteren Versionen. Entfernen Sie alle grep / awk-Inhalte, wenn Sie die vollständige Liste anzeigen möchten.


9
einfache vollständige Listeapt-cache policy |grep http |awk '{print $2 $3}' |sort -u
shadowbq

ein Leerzeichen fehltapt-cache policy |grep http |awk '{print $2 " " $3}' |sort -u
shadowbq

In der Kommandozeile mit grep: /etc/apt/sources.list.d/*sollte geändert werden /etc/apt/sources.list.d/*.list. Den Grund dafür finden Sie unter askubuntu.com/questions/82825/…
Erik Sjölund,

18

Versuche dies:

cat /etc/apt/sources.list

26
Das schließt die Repos von /etc/apt/sources.list.d/ nicht ein, dh diejenigen, die aus # apt-add-repository XXX
ktenney

3
grep -Erh ^deb /etc/apt/sources.list*sollte den Trick machen.
David

1
grep -Erh '^deb ' /etc/apt/sources.list*die deb-srcZeilen ausschließen.
David

8

Es ist kein Format, das zum blinden Kopieren auf einen anderen Computer geeignet ist, aber Benutzer, die herausfinden möchten, ob sie noch ein Repository hinzugefügt haben oder nicht (wie ich), können einfach Folgendes tun:

sudo apt update

Beim aptAktualisieren wird eine Liste der Repositorys ausgegeben, die abgerufen werden. Es scheint offensichtlich, aber ich habe gerade festgestellt, was die GETURLs sind, die es ausspuckt.

Bearbeiten: Der folgende awkAusdruck kann verwendet werden, um eine source.list zu generieren:

 cat /tmp/apt-update.txt | awk '/http/ { gsub("/", " ", $3); gsub("^\s\*$", "main", $3); printf("deb "); if($4 ~ "^[a-z0-9]$") printf("[arch=" $4 "] "); print($2 " " $3) }' | sort | uniq

Alternativ können Sie, wie andere Antworten vermuten lassen, auch catalle bereits vorhandenen Quellen wie folgt verwenden:

cat /etc/apt/sources.list /etc/apt/sources.list.d/*

Da die deaktivierten Repos mit Hash auskommentiert sind, sollte dies wie beabsichtigt funktionieren.


Warum das Downvote? Hinterlasse wenigstens einen Kommentar, damit ich meine Antwort verbessern kann .......
starbeamrainbowlabs

(Vorerst) mit Kommentar herabgestimmt: Bitte zeigen Sie uns, wie diese Ausgabe erfasst und in die Antwort auf die Frage konvertiert wird, dh apt updatewie filtern wir diese Ausgabe / diesen Text jedes Mal , um die für diese Frage relevanten Informationen zu extrahieren?
Dardisco

2
Sehr verbessert! +1 zur Verwendung awkbeim Filtern.
Dardisco

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.