[Eisfair] Alte Lib-Pakete aufräumen

Marcus Röckrath marcus.roeckrath at gmx.de
Fr Aug 2 16:12:42 CEST 2024


Hallo Detlef,

Detlef Paschke wrote:

> eisfair64-dev # eisman query  --format "{N}={V}" --installed "lib*" |
> grep "=3.2." | cut -d= -f1 | xargs -I "%1" eisman usage %1
> package: libasan6
>     |<-- gcc10
> package: libcbor0_8
> package: libcbor0_9
> package: libicu69-ledata
>     |<-- libicu69
> ...
> 
> Nun müsste der Output von "eisman usage" aber nicht angezeigt werden,
> sondern unbenutzte Pakete wie libcbor0_8 oder libcbor0_9 an "eisman
> uninstall --auto" weitergegeben werden. Da hänge ich gerade ein wenig
> fest.

Ich würde eine solche Automatik, die direkt automatisiert rausschmeißt, 
nicht mögen; ein kleiner Fehler und der Ärger kann groß werden.

Ich habe mir mal folgendes Skript geschrieben, um Libs zu entdecken, die 
nicht required werden:

#/bin/bash                                                                                                                                                                                    
                                                                                                                                                                                              
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)                                                                                                                                                              
                                                                                                                                                                                              
for i in ${installedlibs}                                                                                                                                                                     
do                                                                                                                                                                                            
    if ! egrep -q "<linked-package>${i}[ <]" /var/install/packages/*                                                                                                                          
    then                                                                                                                                                                                      
        if ! egrep -q "<require-.*>${i}[ <]" /var/install/packages/*                                                                                                                          
        then                                                                                                                                                                                  
            if [ $(eisman usage ${i} | wc -l) -eq 1 ]                                                                                                                                         
            then                                                                                                                                                                              
                replacing=$(eisman query --outdated --
fields="name,substitude" | grep -B 1 ${i} | head -1 | awk '{ print $2 }')                                                               
                if [ x${replacing} != "x" ]
                then
                    if ! egrep -q "<linked-package>${replacing}[ <]" 
/var/install/packages/*
                    then
                        if eisman query --quiet ${i}
                        then
                            echo ${i}
                        else
                            echo ${i} "(package retired or not existing)"
                        fi
                    fi
                else
                    if eisman query --quiet ${i}
                    then
                        echo ${i}
                    else
                        echo ${i} "(package retired or not existing)"
                    fi
                fi
            fi
        fi
    fi
done

-- 
Gruß Marcus
[eisfair-Team]



Mehr Informationen über die Mailingliste Eisfair