GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Debian – Manuell installierte Pakete der obersten Ebene ohne ihre Abhängigkeiten auflisten?

Es gibt viele Möglichkeiten, manuell installierte Pakete mit apt anzuzeigen , wie zum Beispiel:

apt-mark showmanual

Aber manchmal ist diese Leistung zu viel. Zum Beispiel, wenn der Benutzer das Paket foo manuell installiert hat :

apt-get install foo

…und foo abhängig von bar und baz , dann apt-mark showmanual würde ausgeben:

bar
baz
foo

Wie können wir nur die manuell installierten Pakete der obersten Ebene auflisten (d.h. foo ) ohne ihre Abhängigkeiten (d.h. nicht baz , noch bar )?

Der folgende Code scheint zu funktionieren, aber GNU parallel Aufruf von apt-rdepends ein paar hundert Mal ist zu langsam, (drei Stunden mit einer 4-Kern-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

Akzeptierte Antwort:

Dies könnte mit der Python apt API erfolgen. Die Pakete sehen Sie in apt-mark showmanual sind genau die in apt.cache.Cache() für die is_installed ist ist wahr und is_auto_installed ist falsch. Aber es ist einfacher, die Abhängigkeiten zu verarbeiten:

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

Sogar diese listet einige Pakete auf, die ich dort nicht erwarten würde (init , grep ?!).


Debian
  1. So listen Sie alle oder bestimmte Pakete auf, die auf einem Debian/Ubuntu-Linux-System installiert sind

  2. So listen Sie installierte Pakete unter Ubuntu 20.04 auf

  3. So listen Sie installierte Pakete in Ubuntu auf

  4. Debian – Pakete auf einem Apt-basierten System nach Installationsdatum auflisten?

  5. Installierte Top-Level-Pakete in Fedora auflisten

So konfigurieren Sie sources.list unter Debian 9

So listen Sie installierte Pakete in Linux auf

So listen Sie installierte Pakete in Ubuntu 20.04 auf

So listen Sie die installierten Softwarepakete auf Ubuntu auf

So listen Sie installierte Pakete in Ubuntu 22.04 auf

So listen Sie installierte Pakete unter Ubuntu 22.04 auf