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 ?

19voto

Christophe Points 191

Après avoir lu la page d'information de l'aptitude et une douzaine d'essais, j'ai enfin obtenu ceci :

aptitude search '?narrow(?installed,?not(?archive(testing)) ?archive(unstable))'

ou (équivalent) :

aptitude search '~S ~i (!~Atesting ~Aunstable)'

Cela recherchera les paquets installés depuis des archives instables de n'importe quel dépôt ; Vous devez filtrer les paquets provenant de votre archive par défaut (testing dans l'exemple ci-dessus).

Si vous voulez filtrer les paquets installés depuis www.debian-multimedia.org/unstable :

aptitude search '~S ~i (!~Atesting ~Aunstable ?origin("Unofficial Multimedia Packages"))'

Éditer:
"Archive", "origin" etc. sont déduits du fichier Release du dépôt, mais malheureusement, tous les outils ne peuvent pas lire toutes ces lignes et ils utilisent une syntaxe différente pour elles. Vous pouvez trouver ces fichiers à /var/lib/apt/lists/*Release, ou tapez simplement apt-cache policy pour obtenir un aperçu. apt-cache a changé son format de sortie - les versions ultérieures utilisent le style apt_preferences.

  • Suite: ou Archive: (ancien nom!)
    • aptitude search: ?archive(___) ou ~A___
    • aptitude format: %t
    • apt_preferences: release a=___
    • Exemples pour Ubuntu: natty-backports, trusty-security, stable
  • Origin:
    • aptitude search: ?origin(___) ou ~O___
    • aptitude format: n/a
    • apt_preferences: release o=___
    • Exemples pour Ubuntu: Canonical, Google, Inc., LP-PPA-dockbar-main, Ubuntu
  • toutes les autres lignes
    • aptitude: n/a

18voto

ssice Points 804

En utilisant aptitude, afin de rechercher des packages installés en dehors de la branche stable, vous pouvez utiliser :

aptitude search "?narrow(?installed,?not(?archive(stable)))"

Pour voir les versions ainsi que les noms des packages (et au lieu des descriptions), vous pouvez utiliser la commande avec l'option de format (-F pour court), comme suit.

aptitude search -F "%p %V %v" "?narrow(?installed,?not(?archive(stable)))"

Pour plus de formats, veuillez consulter la page de manuel (voici la documentation avec des options disponibles).

Cela fonctionne par exemple, dans Debian si vous avez installé des packages en dehors de Squeeze (en exécutant, par exemple, apt-get install -t sid nom-du-package.

Vous pouvez voir d'où provient un package installé via apt-cache policy, l'utilisation est la suivante :

apt-cache policy 

Par exemple, mon package python-numpy rend la sortie suivante :

$ LANG=C apt-cache policy python-numpy
python-numpy:
  Installé : 1:1.6.2-1
  Candidat : 1:1.6.2-1.2
  Table de versions:
     1:1.7.0-1 0
          1 http://ftp.es.debian.org/debian/ experimental/main amd64 Packages
     1:1.6.2-1.2 0
        500 http://ftp.es.debian.org/debian/ sid/main amd64 Packages
 *** 1:1.6.2-1 0
        100 /var/lib/dpkg/status
     1:1.4.1-5 0
        990 http://ftp.es.debian.org/debian/ squeeze/main amd64 Packages
        990 http://ftp.de.debian.org/debian/ squeeze/main amd64 Packages

Cela signifie que je suis une version en retard par rapport à la branche actuelle de sid/main, donc j'ai une version old-sid installée. Je vois que je n'ai pas la version stable car elle est encore en 1.4.1-5, et je suis actuellement à 1.6.2-1.

Au moment de la soumission, ce package était déjà mis à jour : )

17voto

Anonymous Points 171

Examinez la balise d'origine (tel que o=Debian) pour chacun de vos dépôts actuels :

apt-cache policy | sed -n 's/.*o=\([^,]\+\).*/\1/p' | uniq

Ensuite, recherchez des packages provenant (ou non) d'une origine spécifique :

aptitude search "?installed?origin(Debian)"

aptitude search "?installed?not(?origin(Debian))"

Ceci n'est pas adapté à un audit de sécurité car il repose sur chaque dépôt pour fournir ses propres informations d'origine, mais cela pourrait être utile pour dépanner l'origine des packages présents dans plusieurs dépôts.

6voto

scottm Points 349

Pour complétude: Sur les systèmes Ubuntu, vous pouvez également utiliser Synaptic pour cette tâche. Dans la colonne de gauche, vous pouvez filtrer les packages par leur origine.

2voto

StrattonL Points 143

J'ai trouvé ceci :

aptitude search "?origin () ?installed"

Vous pouvez également trouver une liste de termes de recherche pris en charge par "aptitude search" ici.

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