¿Cómo obtener una lista de repositorios que apt-get está comprobando? [cerrado]

133

Quiero una lista de repositorios en sources.list, más aquellos en sources.list.d /.

¿Puedo obtener esta lista en una forma adecuada para configurar otro host para que vea los mismos repositorios?

Además, ¿cómo determino qué repositorio es la fuente de un paquete, ya sea instalado o disponible?

Ktenney
fuente
1
Ver askubuntu.com/questions/148932/…
Mawg dice que reinstalar a Monica

Respuestas:

174

Parece que lo más cercano es:

apt-cache policy
Ktenney
fuente
3
¿Alguien mejoró el resultado (resumiendo las URL, etc.) y quería compartir su comando aquí?
lony
49

AFAIK no puede preguntar cuáles son sus fuentes actuales, sin embargo, puede hacer lo que quiera con las herramientas de shell.

Obteniendo una lista de repositorios:

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

Aplicando la lista:

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

Con respecto a obtener un repositorio de un paquete (instalado o disponible), esto hará el truco

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

Sin embargo, eso le mostrará el repositorio de la última versión disponible de ese paquete, es posible que tenga más repositorios para el mismo paquete con versiones anteriores. Elimine todas las cosas grep / awk si desea ver la lista completa.

Valor
fuente
9
lista completa simpleapt-cache policy |grep http |awk '{print $2 $3}' |sort -u
shadowbq
falta un espacioapt-cache policy |grep http |awk '{print $2 " " $3}' |sort -u
shadowbq
En la línea de comando con grep: /etc/apt/sources.list.d/*debe cambiarse a /etc/apt/sources.list.d/*.list. En cuanto al motivo, consulte askubuntu.com/questions/82825/…
Erik Sjölund
18

Prueba esto:

cat /etc/apt/sources.list
radri
fuente
26
Eso no incluirá los repositorios de /etc/apt/sources.list.d/, es decir, los que resulten del # apt-add-repository XXX
ktenney
3
grep -Erh ^deb /etc/apt/sources.list*debería hacer el truco.
David
1
grep -Erh '^deb ' /etc/apt/sources.list*para excluir las deb-srclíneas.
David
8

Es no un formato adecuado para copiarlo ciegamente a otra máquina, pero los usuarios que deseen averiguar si han añadido un repositorio todavía o no (como yo), sólo puede hacer:

sudo apt update

Cuando aptse actualiza, genera una lista de repositorios que recupera. Parece obvio, pero me acabo de dar cuenta de cuáles son las GETURL que escupe.

Editar: La siguiente awkexpresión basada podría usarse para generar una lista 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

Alternativamente, como sugieren otras respuestas, podría simplemente cattodas las fuentes preexistentes como esta:

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

Dado que los repositorios deshabilitados se comentan con hash, esto debería funcionar según lo previsto.

starbeamrainbowlabs
fuente
¿Por qué el voto negativo? Al menos deja un comentario para que pueda mejorar mi respuesta .......
starbeamrainbowlabs
Voto negativo (por ahora) con comentario: muéstrenos cómo capturar esta salida y convertirla en la respuesta a la pregunta, es decir, cada vez que lo hacemos apt update, ¿cómo filtramos esa salida / texto para extraer la información relevante para esta pregunta?
Dardisco
2
¡Mucho mejor! +1 para uso awken el filtrado.
Dardisco