GNU/Linux >> Belajar Linux >  >> Debian

Debian – Daftar Paket yang Diinstal Secara Manual Tingkat Atas Tanpa Ketergantungannya?

Ada banyak cara untuk menampilkan paket yang diinstal secara manual menggunakan apt , seperti:

apt-mark showmanual

Tapi terkadang output itu terlalu banyak. Misalnya jika pengguna menginstal paket foo . secara manual :

apt-get install foo

…dan foo tergantung pada bar dan baz , lalu apt-mark showmanual akan menghasilkan:

bar
baz
foo

Bagaimana kami dapat mencantumkan hanya paket tingkat atas yang diinstal secara manual (yaitu foo ) tanpa ketergantungannya (yaitu bukan baz , atau bar )?

Kode berikut tampaknya berfungsi, tetapi GNU parallel memanggil apt-rdepends beberapa ratus kali terlalu lambat, (tiga jam dengan CPU 4 inti):

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

Jawaban yang Diterima:

Ini dapat dilakukan dengan menggunakan Python apt API. Paket yang Anda lihat di apt-mark showmanual persis yang ada di apt.cache.Cache() yang is_installed benar dan is_auto_installed adalah palsu. Namun, lebih mudah untuk memproses dependensi:

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

Bahkan ini mencantumkan beberapa paket yang tidak akan saya lihat di sana (init , grep ?!).


Debian
  1. Cara Mendaftar Paket yang Diinstal di Ubuntu 20.04

  2. Cara Mendaftar Paket yang Diinstal di Ubuntu

  3. Cara Mendaftar Repositori yang Terinstal Di Ubuntu &Debian

  1. Cara Mendaftar Semua Paket yang Terinstal Di Linux

  2. Debian – Mencantumkan Paket Pada Sistem Berbasis Apt Berdasarkan Tanggal Instalasi?

  3. Cara membuat daftar semua paket dalam repositori di Ubuntu, Debian atau Linux Mint [APT]

  1. Cara Mendaftar Paket yang Diinstal di Ubuntu

  2. Cara membuat daftar semua atau paket tertentu yang diinstal pada sistem Linux Debian/Ubuntu

  3. Daftar terinstal, paket tingkat atas di Fedora