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?


Réponses:


174

Il semble que le plus proche soit:

apt-cache policy

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.


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

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.


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.