GNU/Linux >> Znalost Linux >  >> Debian

Debian – Vypsat ručně instalované balíčky nejvyšší úrovně bez jejich závislostí?

Existuje mnoho způsobů, jak zobrazit balíčky nainstalované ručně pomocí apt , například:

apt-mark showmanual

Ale někdy je ten výstup příliš velký. Například pokud uživatel ručně nainstaloval balíček foo :

apt-get install foo

…a foo závisí na bar a baz a poté apt-mark showmanual bude výstup:

bar
baz
foo

Jak můžeme uvést pouze ručně nainstalované balíčky nejvyšší úrovně (tj. foo ) bez jejich závislostí (tj. ne baz , ani bar )?

Zdá se, že následující kód funguje, ale GNU parallel volání apt-rdepends několik setkrát je příliš pomalé (tři hodiny se 4jádrovým CPU):

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

Přijatá odpověď:

To lze provést pomocí Python apt API. Balíčky, které vidíte v apt-mark showmanual jsou přesně ty v apt.cache.Cache() pro který is_installed je true a is_auto_installed je nepravdivé. Ale je jednodušší zpracovat závislosti:

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

I zde jsou uvedeny některé balíčky, které bych tam nečekal (init , grep ?!).


Debian
  1. Jak zobrazit seznam nainstalovaných balíčků v Ubuntu

  2. Jak vypsat všechny nainstalované balíčky v Linuxu

  3. Jak vypsat všechny balíčky v úložišti na Ubuntu, Debian nebo Linux Mint [APT]

  1. Jak vypsat všechny nebo konkrétní balíčky nainstalované v systému Debian/Ubuntu Linux

  2. Jak zobrazit seznam nainstalovaných balíčků na Ubuntu 20.04

  3. Jak zobrazit seznam nainstalovaných úložišť v Ubuntu a Debianu

  1. Jak zobrazit seznam nainstalovaných balíčků na Ubuntu

  2. Debian – Seznam balíčků na systému založeném na Apt podle data instalace?

  3. Seznam nainstalovaných balíčků nejvyšší úrovně ve Fedoře