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.