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?

Ktenney
quelle
1
Siehe askubuntu.com/questions/148932/…
Mawg sagt, Monica

Antworten:

174

Es scheint am nächsten zu sein:

apt-cache policy
Ktenney
quelle
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.

Tapferkeit
quelle
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
radri
quelle
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.

Stareamrainbowlabs
quelle
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