23 Feb 2022

Ursache für ein installiertes Paket bei Debian

Es kommt vor, dass auf einem Rechner ein Softwarepaket installiert ist, aber man nicht weiß, warum es installiert ist. In einigen Fällen hat man schlicht vergessen, dass es man es irgendwann mal installiert hat. In anderen Fällen liegt es daran, dass man ein anderes Paket installiert hat, das das fragliche Paket als Abhängigkeit hat oder von einem Paket ahängt, das wiederum von einem dritten Paket abhängt, das von dem ersten Paket abhängt. Für letzeren Fall kann man auf Debian verhältnismäßig einfach ermitteln, was der Grund für die Paketinstallation war.

Am Beispiel vom Paket php7.4-cli auf einem Server, auf dem ich keinen händischen Aufruf für PHP-Scripte brauche, möchte ich das einmal demonstrieren. Es gibt weit verbreitet den Ansatz über Aptitude. Hierzu könnt ihr den folgenden Befehl nutzen:

$ aptitude why php7.4-cli
i   libapache2-mod-php    Hängt ab von libapache2-mod-php7.4
i A libapache2-mod-php7.4 Hängt ab von php7.4-cli

Ihr seht also, dass das CLI installiert ist, weil libapache2-mod-php7.4 installiert ist und das wiederum ist installiert, weil das Apache2-Modul libapache2-mod-php hiervon abhängt. Letzeres habe ich im Beispiel manuell installiert. Warum man das Command Line Interface für einen reinen Webserver braucht sei mal dahingestellt - der Abhängigkeitsbaum des Debian ist unergründlich.

Ein Vorteil von Aptitude ist, dass es gut für den Menschen zu lesen ist. Allerdings muss es seperat installiert werden und ist bei einer Standardinstallation nicht vorinstalliert. Aber auch mit Boardmitteln einer Debian-Standardinstallation könnt ihr die Ursache für die Installation finden. Hierfür nutzt ihr den Befehl apt-cache, beispielsweise mit den folgenden Parametern:

$ apt-cache rdepends --installed --recurse php7.4-cli
php7.4-cli
Reverse Depends:
  libapache2-mod-php7.4
  libapache2-mod-php7.4
libapache2-mod-php7.4
Reverse Depends:
  libapache2-mod-php
libapache2-mod-php
Reverse Depends:

Ein weiterer Vorteil von Apt-Cache ist, dass es alle Abhängigkeiten aufzeigt, die die Installation eines Paketes bedingen. Wenn ihr also noch weitere Pakete installiert hab, die das selbe Paket benötigen, werden die hier auch aufgezeigt. Andererseits liefert Aptitude nur eine von potentiell mehreren Begründungen.