Comment puis-je lister tous les paquets que j'ai installés à partir d'un référentiel particulier?


51

Comment puis-je lister tous les paquets que j'ai installés à partir d'un référentiel particulier?

Comment puis-je lister tous les paquets installés qui ne sont pas disponibles dans les archives principales d'Ubuntu, et aussi voir de quels référentiels ils proviennent? (Si je connaissais la réponse à cette question, je pourrais consulter cette liste pour un nom particulier de PPA afin de connaître la réponse à ma première question.)


Comme il ne semble pas exister un outil de ligne de commande pour cela (malheureusement), j'accepterai l'une des réponses de l'interface graphique.
Marius Gedminas

Réponses:


24

Développez l'élément "Logiciels installés" dans le Centre logiciel Ubuntu. Vous verrez une liste de tous les différents référentiels que vous avez activés. En cliquant sur le dépôt vous montrera les paquets que vous avez installés à partir de chacun.

texte alternatif


Je crains que cette option ne soit disponible que dans Ubuntu 10.10 ou est-ce que je manque quelque chose? My Software Center n'affiche pas les sources sous ce menu.
lovinglinux

2
Dans ma version, j'ai un menu déroulant "Installé" en haut. Lorsque je sélectionne cette option, je peux choisir les différentes sources (noyau, pour achat, PPA ...)
Alexis Wilke

Dans Ubuntu 16.04, cette page n'est plus disponible. Cependant, Synaptic a une fonctionnalité similaire - cliquez sur "Origine" en bas à gauche.
Josh

26

Il semble n'y avoir aucun enregistrement de l'origine d'un paquet installé .

Si vous êtes en mesure d’obtenir l’emplacement à partir duquel un package du même nom serait téléchargé, il est disponible via apt-cache policy. Le script suivant (plutôt moche) me convient:

LC_ALL=C dpkg-query --showformat='${Package}:${Status}\n' -W '*' \
  | fgrep ':install ok installed' \
  | cut -d: -f1 \
  | (while read pkg; do 
       inst_version=$(apt-cache policy $pkg \
                                | fgrep Installed: \
                                | awk '{ print $2 }'); 
       origin=$(apt-cache policy "$pkg" \
                          | fgrep " *** ${inst_version}" -C1 \
                          | tail -n 1 \
                          | cut -c12-); 
       echo $pkg $origin; 
     done)

Notez qu'il est assez fragile, car il émet des hypothèses sur le résultat de apt-cache policy, qui pourraient changer d'une version à l'autre ...


Oui, cela signifierait essentiellement écrire un outil à partir de zéro. Et je pense que l'analyse de / var / lib / apt / lists avec Perl ou Python serait plus rapide et plus robuste.
Marius Gedminas

Fonctionne normalement ici, en 2018 :) Merci!
N0rbert

J'ai développé une solution similaire testée sur Ubuntu et Debian.
Famzah

23

Ouvrez le Gestionnaire de paquets Synaptic et cliquez sur le bouton "Origine" en bas à gauche de la barre latérale. Il listera vos sources. Sélectionnez une source pour voir les packages disponibles / installés.


4

Ce script répertorie les packages installés et disponibles dans PPA:

#!/bin/sh
# Give PPA name as an argument, e.g. ppa:oibaf/graphics-drivers

name1="$(echo "$1"|cut -d: -f2|cut -d/ -f1)"
name2="$(echo "$1"|cut -d/ -f2)"

awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' \
/var/lib/apt/lists/*"$name1"*"$name2"*Packages |
xargs dpkg-query -W -f='${Status} ${Package}\n' 2>/dev/null  | awk '/^[^ ]+ ok installed/{print $4}'

J'ai appliqué ceci .

BTW En ce qui concerne le retrait du PPA, utilisez le programme ppa-purge; J'ai créé une version améliorée de celui-ci ici .


3

Sous Quantal (12.10), l'espace dans la ligne d'origine doit être supprimé.

LC_ALL=C dpkg-query --showformat='${Package}:${Status}\n' -W '*' \
 | fgrep ':install ok installed' \
 | cut -d: -f1 \
 | (while read pkg; do 
   inst_version=$(apt-cache policy $pkg \
                            | fgrep Installed: \
                            | cut -d: -f2-); 
   origin=$(apt-cache policy "$pkg" \
                      | fgrep " ***${inst_version}" -C1 \
                      | tail -n 1 \
                      | cut -c12-); 
   echo $pkg $origin; 
 done)
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.