Verwaiste Lib-Pakete entfernen
Zunächst eine kleine Aufzählung über die Gründe, wie nicht mehr benötigte Lib-Pakte auf einem eisfair-Server entstehen können:
- Die Deinstallation von Anwendungs-Paketen entfernt von diesen angeforderte Lib-Pakete nicht aus dem System.
- Eine neuere Version eines Anwendungs-Paketes bindet eine bestimmte Library nicht mehr ein.
- Die Weiterentwicklung von Libraries führt bei Wechsel der API-Version der Library zu zwei (oder mehr) unabhängigen Lib-Paketen, z. B. libelf0 und und libelf1. Programme sind entweder gegen die eine oder andere Version der Library gelinkt, so dass sogar beide Lib-Pakete auf einem System vorhanden sein müssen. Gegebenenfalls wechseln aber im Laufe der Zeit alle Anwendungen auf die neuere Version der Library, so dass die Vorversion nicht mehr benötigt wird und somit auch entfernt werden kann.
- Man hat eine Anwendung manuell, also nicht als eisfair-Paket installiert. Notwendige Lib-Paket wurden gleichfalls manuell ermittelt und dann als eisfair-Lib-Paket installiert.
- …
Bei eisfair als Rolling-Release-Linux-Distribution können sich über die Jahre durchaus einige unnötige Lib-Pakete ansammeln, die man eventuell los werden möchte.
Eine kleine Hilfestellung soll hierzu das Paket orphanedlibs geben, welches Lib-Pakete ermittelt, die von keinem eisfair-Paket mehr benötigt werden.
# orphanedlibs.sh help Usage: orphanedlibs.sh [--eisman] [--all] [--nolinked] [--help] Identifies lib packages not required by any eisfair package. Options: --eisman : Use list of lib packages created by eisman. Default: Use list of lib packages from packages info" files in /var/install/packages directory." --all : Output a list of all lib packages where a "+" or "-" in first column indicates whether a lib is required (+) or not (-). Default: Print list of orphaned lib packages only. --nolinked : Do not pay attention the linked-package-Tag. --help : This help page.
Lib-Pakete, die man manuell installiert hat, ohne dass ein eisfair-Paket dieses erfordert, werden als verwaist angesehen!
Die installierten Lib-Pakete werden im Normalfall über die Dateien im Verzeichnis /var/install/packages ermittelt, mit der Option „–eisman“ wird diese Liste über „eisman query –installed …“ erstellt.
Die Option „–all“ gibt eine Liste aller installierten Lib-Pakete aus, wobei in der ersten Spalte ein „+“ oder „-“ anzeigt, ob die Library noch benötigt wird (+) oder dies nicht mehr der Fall ist (-).
Beispiele:
Die beiden Pakete libelf0 und librhash0 werden von keinem anderen installierten Paket mehr erfordert.
# orphanedlibs.sh libelf0 librhash0
# orphanedlibs.sh all ... - libelf0 + libelf1 - librhash0 + librhash1 ...
Gegebenenfalls werden weitere Hinweise ausgegeben.
Hat ein Lib-Paket einen anders benamten Nachfolger:
... [replaced by: ]
Ein Lib-Paket ist auf keinem konfigurierten Paketservern (mehr) verfügbar:
... (package not found on configured package servers)
Pakete können auch über das linked-package-Tag miteinander verbunden sein. Das Skript behandelt ein in einem linked-package-Tag vorgefundenes lib*-Paket als notwendig, auch wenn es nirgends als echte Abhängigkeit (require-Tag) gelistet ist. Die Nutzung der Option „–nolinked“ werden die linked-package-Tags nicht berücksichtigt.
Auf einem meiner Systeme ergibt die Suche mit „–nolinked“-Option weitere möglicherweise „unnütze“ Pakete zutage:
# orphanedlibs.sh –nolinked libmariadbprivate libpoppler-cpp0 libprotoc3_21_12 libqt5network5 libqt5xml5
Hier waere genau zu überlegen, warum man diese Pakete, die von keinem anderen Paket gefordert werden, installiert hat:
Das Skript macht nur Vorschläge, deinstalliert aber keine Pakete selbstständig. Eine Lib-Deinstallation hat immer manuell auf der Kommandozeile
eisman uninstall <Paketname>
oder im Paketmenü zu erfolgen.
Nach Entfernen von Lib-Paketen sollte man das Skripts nochmals starten, da durch Abhängigkeiten von Lib-Paketen untereinander eventuell weitere Lib-Pakete verwaist sind.
Detlef Paschke hat ein ähnliches Skript entwickelt, welches direkt interaktiv oder automatisch die Deinstallation der als verwaist erkannten Lib-Pakete erlaubt.