GNU/Linux >> Tutoriales Linux >  >> Debian

Debian – ¿Lista los paquetes instalados manualmente de nivel superior sin sus dependencias?

Hay muchas formas de mostrar paquetes instalados manualmente usando apt , como:

apt-mark showmanual

Pero a veces esa salida es demasiado. Por ejemplo, si el usuario instaló manualmente el paquete foo :

apt-get install foo

…y foo dependía de bar y baz , luego apt-mark showmanual generaría:

bar
baz
foo

¿Cómo podemos enumerar solo los paquetes de nivel superior instalados manualmente (es decir, foo ) sin sus dependencias (es decir, no baz , ni bar )?

El siguiente código parece funcionar, pero GNU parallel llamando a apt-rdepends unos cientos de veces es demasiado lento (tres horas con una CPU de 4 núcleos):

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

Respuesta aceptada:

Esto podría hacerse usando la API apt de Python. Los paquetes que ve en apt-mark showmanual son exactamente los que están en apt.cache.Cache() para el cual is_installed es verdadero y is_auto_installed Es falso. Pero es más fácil procesar las dependencias:

#! /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))

Incluso esto enumera algunos paquetes que no esperaría ver allí (init , grep ?!).


Debian
  1. Cómo listar todos o paquetes específicos instalados en el sistema Debian/Ubuntu Linux

  2. Cómo enumerar los paquetes instalados en Ubuntu 20.04

  3. Cómo enumerar los paquetes instalados en Ubuntu

  4. Cómo enumerar los repositorios instalados en Ubuntu y Debian

  5. Cómo enumerar todos los paquetes instalados en Linux

Cómo configurar source.list en Debian 9

Cómo enumerar los paquetes instalados en Linux

Cómo enumerar los paquetes instalados en Ubuntu 20.04

Cómo enumerar los paquetes de software instalados en Ubuntu

Cómo enumerar los paquetes instalados en Ubuntu 22.04

Cómo enumerar los paquetes instalados en Ubuntu 22.04