GNU/Linux >> Linux Esercitazione >  >> Debian

Debian:elencare i pacchetti installati manualmente di primo livello senza le loro dipendenze?

Ci sono molti modi per mostrare i pacchetti installati manualmente usando apt , come:

apt-mark showmanual

Ma a volte quell'output è troppo. Ad esempio, se l'utente ha installato manualmente il pacchetto foo :

apt-get install foo

…e foo dipendeva da bar e baz , quindi apt-mark showmanual produrrebbe:

bar
baz
foo

Come possiamo elencare solo i pacchetti installati manualmente di livello superiore (cioè foo ) senza le loro dipendenze (ovvero non baz , né bar )?

Il codice seguente sembra funzionare, ma GNU parallel chiamando apt-rdepends qualche centinaio di volte è troppo lento, (tre ore con una CPU a 4 core):

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

Risposta accettata:

Questo potrebbe essere fatto usando l'API Python apt. I pacchetti che vedi in apt-mark showmanual sono esattamente quelli in apt.cache.Cache() per cui is_installed è vero e is_auto_installed è falso. Ma è più facile elaborare le dipendenze:

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

Anche questo elenca alcuni pacchetti che non mi aspetterei di vedere lì (init , grep ?!).


Debian
  1. Come elencare tutti o pacchetti specifici installati sul sistema Debian/Ubuntu Linux

  2. Come elencare i pacchetti installati in Ubuntu

  3. Come elencare i repository installati in Ubuntu e Debian

  4. Come elencare tutti i pacchetti installati in Linux

  5. Debian:elencare i pacchetti su un sistema basato su Apt per data di installazione?

Come configurare sources.list su Debian 9

Come elencare i pacchetti installati in Linux

Come elencare i pacchetti installati in Ubuntu 20.04

Come elencare i pacchetti software installati su Ubuntu

Come elencare i pacchetti installati in Ubuntu 22.04

Come elencare i pacchetti installati su Ubuntu 22.04