Sunday, June 30, 2019

Debian: Sich über aus APT-Datenquellen entfernte Pakete informieren lassen

Um sich über Paket die aus den Debian APT-Datenquellen entfernt wurden informieren zu lassen, kann apt-listobsolet während eines apt update neue, entfernte und obsolete Pakete anzeigen. Was u.a. praktisch sein kann, wenn man testing oder wie ich backports nutzt. Unter stable sollte sich definitionsbedingt am Paketindex nichts oder nur sehr wenig ändern (aber es kommt vor).

Vorweg: Eine Alternative ist u.a. das Kommando aptitude search ~obsolet.

apt-lsobsolet

Es wird hierfür die Liste der im APT-Cache verfügbaren Pakete, mit der Liste aller installierten Pakete verglichen und die Differenz der Schnittmenge ausgegeben. Die Differenz sollten dann alle installierten Pakete sein, die aber nicht mehr über die Paketverwalung verfügbar sind.

#!/bin/bash
comm -1 -3 <(apt-cache dumpavail | awk '/^Package: / {sub(/:.*/, "", $2); print $2}'|sort -u) <(dpkg -l | awk '/^ii / {sub(/:.*/, "", $2); print $2}'|sort -u) | sort -u

apt-lsrc

#!/bin/bash
dpkg -l | awk '/^rc/ {sub(/:.*/, "", $2); print $2}' | sort -u

Von apt-lsrc werden alle Pakete aufgelistet, die vom System entfernt wurden, aber deren Konfiguration noch installiert ist. Was aber durchaus so gewollt sein kann.

Anhang: Integration in APT

Es kann das Skript auch während eines apt update ausgeführt werden. Damit die Ausgabe beim aktualisieren des Paketindex angezeigt wird, konfiguriert man folgendes in /etc/apt/apt.conf.d/local:

cat <<! >>/etc/apt/apt.conf.d/local
APT::Update::Post-Invoke-Success:: "/usr/local/bin/apt-lsobsolet";
!

Da die Ausgabe mit unter sehr umfangreich sein kann und vor allem weil so jedes mal erneut über die selben Pakete informiert wird, ist es besser sich nur über neu dazugekommene Pakete informieren zu lassen. Einen Prototyp des Konzept dafür, findet man auf GitHub: https://github.com/1nn3/apt-listobsolet.