[Eisfair] Alte Lib-Pakete aufräumen
Stefan Puschek
stefan.puschek at t-online.de
Sa Aug 3 16:33:20 CEST 2024
hallo Marcus,
> Ich habe bislang immer als Grundlage den Inhalt von
> /var/install/packages genommen, aber vielleicht will man es auch auf
> Basis der installed.db machen, daher hier eine Variante, die ohne
> Parameter aufgerufen die Info- Dateien aus /var/install/packages
> nimmt, mit dem Schalter eisman jedoch die Paketdatenbank von eisman:
>
> #/bin/bash
>
> if [ "$1" = eisman ]
> then
> installedlibs=$(eisman query --installed --format={N} "lib*" | \
> grep -v "\-dev$" | \
> grep -v "\-doc$" | \
> grep -v "\-plugins$" | \
> grep -v "\-prog$" | \
> grep -v "\-tools$" | \
> grep -v "\-utils$")
> else
> installedlibs=$(ls -1 /var/install/packages/lib* | \
> grep -v "\-dev$" | \
> grep -v "\-doc$" | \
> grep -v "\-plugins$" | \
> grep -v "\-prog$" | \
> grep -v "\-tools$" | \
> grep -v "\-utils$" | \
> cut -d "/" -f 5)
> fi
>
> for i in ${installedlibs}
> do
> libneeded=true
> if ! grep -E -q "<linked-package>${i}[ <]"
> /var/install/packages/* && \ ! grep -E -q "<require-.*>${i}[ <]"
> /var/install/packages/* && \ [ $(eisman usage ${i} | wc -l) -eq 1 ]
> then
> libneeded=false
> replacement=$(eisman query --outdated
> --fields="name,substitude" | \ grep -E -A 1 "^name[ \t]*${i}$" | grep
> "^substitude" | \
> head -1 | awk '{ print $2 }')
> while [ -n "${replacement}" ]
> do
> if grep -E -q "<linked-package>${replacement}[ <]"
> /var/install/packages/* || \
> grep -E -q "<require-.*>${replacement}[ <]"
> /var/install/packages/* || \
> [ $(eisman usage ${replacement} | wc -l) -gt 1 ]
> then
> libneeded=true
> break
> else
> replacement=$(eisman query --outdated --
> fields="name,substitude" | \
> grep -E -A 1 "^name[
> \t]*${replacement}$" | grep "^substitude" | \
> head -1 | awk '{ print $2 }')
> fi
> done
> if [ "${libneeded}" = false ]
> then
> if eisman query --quiet ${i}
> then
> echo ${i}
> else
> echo ${i} "(package retired or not existing)"
> fi
> fi
> fi
> done
>
> Wenn die Infos in /var/install/packages zu denen der Paketdatenbank
> passen, sollte es natürlich keinen Unterschied machen. In dem man
> beide Varianten mal startet, kann man natürlich auch Unstimmigkeiten
> entdecken, also
>
> - laut DB installierte Pakete deren Info-File fehlt
>
> - Info-File vorhanden aber nicht installiert
beide probiert:
barbrady # ./unusedlibs
libsgutils2-1_48-2
barbrady # ./unusedlibs eisman
libsgutils2-1_48-2
barbrady #
es gibt dafür keine filelist und keine deinstall
aber die lib existiert, sogar in zwei Versionen
barbrady # ls -la /lib/libsgutils*
lrwxrwxrwx 1 root root 25 May 18 2023 /lib/libsgutils2-1.46.so.2
-> libsgutils2-1.46.so.2.0.0 -rw-r--r-- 1 root root 250716 May 19 2023
/lib/libsgutils2-1.46.so.2.0.0 lrwxrwxrwx 1 root root 25 May 18
2023 /lib/libsgutils2-1.48.so.2 -> libsgutils2-1.48.so.2.0.0 -rw-r--r--
1 root root 313728 May 19 2023 /lib/libsgutils2-1.48.so.2.0.0 barbrady
#
Groetjes
Stefan
Mehr Informationen über die Mailingliste Eisfair