42 votes

Trouver les paquets installés à partir d'un certain dépôt avec aptitude

Je suis à la recherche de quelque chose d'analogique à cette question : Zypper : Comment afficher tous les paquets d'un dépôt particulier ?

Étant donné que je suis sur Ubuntu, j'ai besoin d'une solution basée sur aptitude : Comment puis-je obtenir une liste des paquets installés d'un certain dépôt ?

2voto

Jai Pandya Points 183

Tout d'abord, trouvez le(s) fichier(s) approprié(s) pour le dépôt d'intérêt dans /var/lib/apt/lists. Il devrait être possible de le faire de manière programmée, mais je n'ai pas encore eu besoin de le faire.

En utilisant Google Chrome comme exemple, essayez ceci :

SEARCH_PATTERN=dl.google.com_linux_chrome  # ajustez selon vos besoins

for PKG in $( grep-dctrl -sPackage . /var/lib/apt/lists/${SEARCH_PATTERN}_*_Packages | sed 's/^Package: //' )
do
    if dpkg -s "${PKG}" 2> /dev/null 1> /dev/null
    then
        echo ${PKG}
    fi
done

et j'obtiens la sortie :

google-chrome-stable

dpkg -s renvoie 0 si le paquet est installé et différent de zéro sinon. Pour référence future, la sortie de

grep-dctrl -sPackage . /var/lib/apt/lists/${SEARCH_PATTERN}_*_Packages

était

Package: google-chrome-beta
Package: google-chrome-stable
Package: google-chrome-unstable

0voto

Animism Points 121

Les autres réponses sont en fait incorrectes, car le paramètre de ?archive() est une expression régulière. Ainsi, ?archive(stable) correspond à la fois à stable et à unstable. Pour exclure uniquement stable, vous devez ancrer le motif regex:

aptitude search -F "%p %V %v %t" '?any-version(?installed ?not(?archive("^stable$")))'

Pour exclure plusieurs dépôts:

aptitude search -F "%p %V %v %t" '?any-version(?installed ?not(?archive("^(xenial|xenial-updates)$")))'

Notez également que certains paquets appartiennent à plusieurs dépôts, par exemple xenial-security,xenial-updates. ?archive() évalue le motif regex contre chaque dépôt individuellement, donc ?archive("^xenial-updates$") correspondra à tout paquet appartenant à xenial-updates, même s'il appartient également à d'autres dépôts.

0voto

user4537303 Points 1

Je suis récemment tombé sur cela après des expériences avec la cannelle de Uma sur Sid :

aptitude search "?maintainer([Ll]inux ?[Mm]int)?installed?origin(linuxmint)"

parce que "origine" ne m'a donné que des paquets installés mais pas la version provenant des dépôts de Mint.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X