[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