GNU/Linux >> Tutoriels Linux >  >> Debian

Debian – Lister les packages installés manuellement de haut niveau sans leurs dépendances ?

Il existe de nombreuses façons d'afficher les packages installés manuellement à l'aide de apt , tels que :

apt-mark showmanual

Mais parfois, cette sortie est trop. Par exemple, si l'utilisateur a installé manuellement le package foo :

apt-get install foo

…et foo dépendait de bar et baz , puis apt-mark showmanual afficherait :

bar
baz
foo

Comment pouvons-nous répertorier uniquement les packages installés manuellement de haut niveau (c'est-à-dire foo ) sans leurs dépendances (c'est-à-dire pas baz , ni bar ) ?

Le code suivant semble fonctionner, mais GNU parallel appeler apt-rdepends quelques centaines de fois, c'est trop lent (trois heures avec un processeur à 4 cœurs) :

apt-mark showmanual | 
tee /tmp/foo | 
parallel "apt-rdepends -f Depends,PreDepends,Suggests,Recommends {} |
          tail +2" 2> /dev/null | 
tr -s ' ' 'n' | 
grep -v '[():]' | 
sort -Vu | 
grep -wv -f - /tmp/foo

Réponse acceptée :

Cela pourrait être fait en utilisant l'API Python apt. Les packages que vous voyez dans apt-mark showmanual sont exactement ceux de apt.cache.Cache() pour lequel is_installed est vrai et is_auto_installed c'est faux. Mais, il est plus simple de traiter les dépendances :

#! /usr/bin/env python3

from apt import cache

manual = set(pkg for pkg in cache.Cache() if pkg.is_installed and not pkg.is_auto_installed)
depends = set(dep_pkg.name for pkg in manual for dep in pkg.installed.get_dependencies('PreDepends', 'Depends', 'Recommends') for dep_pkg in dep)

print('n'.join(pkg.name for pkg in manual if pkg.name not in depends))

Même ceci répertorie certains packages que je ne m'attendrais pas à y voir (init , grep ?!).


Debian
  1. Comment répertorier tous les packages ou des packages spécifiques installés sur le système Debian/Ubuntu Linux

  2. Comment répertorier les packages installés sur Ubuntu 20.04

  3. Comment répertorier les packages installés dans Ubuntu

  4. Comment lister tous les packages installés sous Linux

  5. Debian – Répertorier les packages sur un système basé sur Apt par date d'installation ?

Comment configurer sources.list sur Debian 9

Comment répertorier les packages installés sous Linux

Comment répertorier les packages installés dans Ubuntu 20.04

Comment répertorier les packages logiciels installés sur Ubuntu

Comment répertorier les packages installés dans Ubuntu 22.04

Comment répertorier les packages installés sur Ubuntu 22.04