Huhu,
die Art und Weise, wie Debian-Paket-Management funktioniert, erlaubt hier schlicht keinen guten automatischen Fix:
- Der Cron-Job, durch den die E-Mails erzeugt werden (
/etc/cron.d/php5
), gilt wohl als Konfigurationsdatei. Unter Debian werden Konfigurationsdateien nur dann gelöscht, wenn ein Paket gepurget wird (apt-get remove --purge <paketname>
bzw. dpkg --purge <paketname>
).
- Pakete, die im Status
rc
sind (removed, configured), werden vom Paketmanagement nie automatisch gepurget. Das ist immer Sache der Administratorin.
- Pakete, die nicht mehr benötigt werden und automatisch entfernt werden, werden ebenfalls laut Debian-Policy nicht automatisch entfernt. Auch das ist Aufgabe der Administratorin.
- Pakete, die durchaus noch von anderen Paketen benötigt werden (z.B.
php5-common
wird beispielsweise noch von php5-cgi
benötigt), werden erst Recht nicht automatisch entfernt, es sei denn, es kommt bei Upgrades durch explizite Konflikte dazu
Auf meiner Liste für Dinge, die ich nach jedem UCS-Update tun muss, stehen daher u.a. die folgenden Punkte:
- Automatisch installierte aber nicht mehr benötigte Pakete mit
apt-get autoremove --purge
entfernen
- Pakete im Status
rc
purgen, sofern nicht benötigt; Liste mit dpkg -l | grep '^rc'
, purgen mit dpkg -l | awk '/^rc/ { print $2 }' | xargs -r dpkg --purge
Das Paket, um das es hier geht, stammt noch aus UCS 4.2, genauer: unverändert aus Debian 8. Es wäre also Job der Debian-Entwickler, den Cron-Job so anzupassen, dass er nur ausgeführt wird, wenn das php5
-Binary noch existiert.
Die einfachste Lösungsmöglichkeit: du purgest das Paket (php5-common
), zu dem der Cron-Job gehört, sofern du es nicht mehr benötigst (kannst ja sehen, was entfernt werden würde, wenn du apt-get remove --purge php5-common
ausführst).
Möglichkeit 2: du schreibst einen Bugreport an Debian, dass der Cron-Job das Script nur ausführen sollte, wenn das Binary auch wirklich existiert. Andere Cron-Jobs enthalten solche Tests durchaus.
Lustige Beobachtung: das analoge Paket für PHP 7.0 enthält einen analogen Cron-Job /etc/cron.d/php
, der das Script nur dann ausführt, wenn das System nicht mit systemd
als init laufen sollte. Wenn es mit systemd
läuft, so wird ein systemd
-Timer für das Gleiche benutzt. Wenn man jemals in die Verlegenheit kommen sollte, zwar noch php7.0-common
aber nicht mehr php7.0-cli
installiert zu haben, so würde man daher trotzdem keine Mails bekommen, weil die Ausgabe von Timern erst mal nur im Journal landet.