Comment obtenir une liste des dépôts qu'apt-get vérifie? [fermé]

133

Je veux une liste de dépôts dans sources.list, plus ceux dans sources.list.d /.

Puis-je obtenir cette liste sous une forme adaptée à la configuration d'un autre hôte afin qu'il regarde les mêmes dépôts?

De plus, comment déterminer quel dépôt est la source d'un package, installé ou disponible?

Ktenney
la source
1
Voir askubuntu.com/questions/148932/…
Mawg dit de réintégrer Monica

Réponses:

174

Il semble que le plus proche soit:

apt-cache policy
Ktenney
la source
3
Quelqu'un a-t-il amélioré la sortie (résumant les URL, etc.) et voulait-il partager sa commande ici?
lony
49

AFAIK vous ne pouvez pas demander à apt quelles sont leurs sources actuelles, mais vous pouvez faire ce que vous voulez en utilisant les outils shell.

Obtenir une liste de référentiels:

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

Application de la liste:

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

En ce qui concerne l'obtention du dépôt à partir d'un package (installé ou disponible), cela fera l'affaire

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

Cependant, cela vous montrera le référentiel de la dernière version disponible de ce package, vous pouvez avoir plus de référentiels pour le même package avec des versions plus anciennes. Supprimez tous les éléments de grep / awk si vous voulez voir la liste complète.

Valeur
la source
9
simple liste complèteapt-cache policy |grep http |awk '{print $2 $3}' |sort -u
shadowbq
manque un espaceapt-cache policy |grep http |awk '{print $2 " " $3}' |sort -u
shadowbq
Dans la ligne de commande avec grep: /etc/apt/sources.list.d/*doit être remplacé par /etc/apt/sources.list.d/*.list. Quant à la raison, voir askubuntu.com/questions/82825/…
Erik Sjölund
18

Essaye ça:

cat /etc/apt/sources.list
radri
la source
26
Cela n'inclura pas les dépôts de /etc/apt/sources.list.d/, IE ceux résultant de # apt-add-repository XXX
ktenney
3
grep -Erh ^deb /etc/apt/sources.list*devrait faire l'affaire.
David
1
grep -Erh '^deb ' /etc/apt/sources.list*pour exclure les deb-srclignes.
David
8

Ce n'est pas un format adapté à la copie aveugle sur une autre machine, mais les utilisateurs qui souhaitent savoir s'ils ont encore ajouté un référentiel ou non (comme je l'ai fait), vous pouvez simplement faire:

sudo apt update

Lors de la aptmise à jour, il génère une liste des référentiels qu'il récupère. Cela semble évident, mais je viens de réaliser quelles sont les GETURL qu'il crache.

Edit: L' awkexpression suivante peut être utilisée pour générer 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

Alternativement, comme le suggèrent d'autres réponses, vous pouvez simplement cattoutes les sources préexistantes comme celle-ci:

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

Étant donné que les dépôts désactivés sont commentés avec un hachage, cela devrait fonctionner comme prévu.

starbeamrainbowlabs
la source
Pourquoi le vote négatif?
Laissez au
Downvoté (pour le moment) avec commentaire: Veuillez nous montrer comment capturer cette sortie et la convertir en réponse à la question, c'est-à-dire à chaque fois que nous le faisons apt update, comment filtrer cette sortie / texte pour extraire les informations pertinentes à cette question?
dardisco
2
Très amélioré! +1 pour utilisation awkdans le filtrage.
dardisco