Come ottenere un elenco di repository che apt-get sta verificando? [chiuso]


133

Voglio un elenco di repository in sources.list, oltre a quelli in sources.list.d /.

Posso ottenere questo elenco in una forma adatta per impostare un altro host in modo che guardi gli stessi repository?

Inoltre, come posso determinare quale repository è l'origine di un pacchetto, installato o disponibile?


Risposte:


174

Sembra che il più vicino sia:

apt-cache policy

3
Qualcuno ha migliorato l'output (riepilogando gli URL ecc.) E vuoi condividere il suo comando qui?
lony,

49

AFAIK non puoi chiedere a apt quali sono le loro fonti attuali, tuttavia puoi fare quello che vuoi usando gli strumenti della shell.

Ottenere un elenco di repository:

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

Applicando l'elenco:

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

Per quanto riguarda ottenere il repository da un pacchetto (installato o disponibile), questo funzionerà

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

Tuttavia, ciò ti mostrerà il repository dell'ultima versione disponibile di quel pacchetto, potresti avere più repository per lo stesso pacchetto con versioni precedenti. Rimuovi tutte le cose grep / awk se vuoi vedere l'elenco completo.


9
semplice elenco completoapt-cache policy |grep http |awk '{print $2 $3}' |sort -u
shadowbq

manca uno spazioapt-cache policy |grep http |awk '{print $2 " " $3}' |sort -u
shadowbq

Nella riga di comando con grep: /etc/apt/sources.list.d/*deve essere modificato in /etc/apt/sources.list.d/*.list. Per quanto riguarda il motivo, vedi askubuntu.com/questions/82825/…
Erik Sjölund

18

Prova questo:

cat /etc/apt/sources.list

26
Ciò non includerà i repository da /etc/apt/sources.list.d/, IE quelli risultanti da # apt-add-repository XXX
ktenney,

3
grep -Erh ^deb /etc/apt/sources.list*dovrebbe fare il trucco.
David,

1
grep -Erh '^deb ' /etc/apt/sources.list*per escludere le deb-srclinee.
David,

8

E ' non è un formato adatto per la copia ciecamente ad un'altra macchina, ma gli utenti che desiderano capire se hanno ancora o no aggiunto un repository (come ho fatto io), si può semplicemente fare:

sudo apt update

Durante l' aptaggiornamento, genera un elenco di repository che recupera. Sembra ovvio, ma ho appena capito quali sono gli GETURL che sputano.

Modifica: la seguente awkespressione basata su potrebbe essere utilizzata per generare un sources.list:

 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

In alternativa, come suggeriscono altre risposte, potresti solo cattutte le fonti preesistenti come questa:

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

Poiché i repository disabilitati vengono commentati con hash, questo dovrebbe funzionare come previsto.


Perché il downvote? Almeno lascia un commento in modo da poter migliorare la mia risposta .......
starbeamrainbowlabs

Sottovalutato (per ora) con commento: Per favore mostraci come catturare questo output e convertirlo nella risposta alla domanda, cioè ogni volta che lo facciamo apt update, come filtriamo quell'output / testo per estrarre le informazioni rilevanti per questa domanda?
dardisco,

2
Molto migliorato! +1 per l'uso awknel filtraggio.
dardisco,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.