[Eisfair] Alte Lib-Pakete aufräumen
Marcus Röckrath
marcus.roeckrath at gmx.de
Sa Aug 3 12:05:46 CEST 2024
Hallo,
Marcus Röckrath wrote:
> 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
Eigentlichj reicht obiges schon im Normalfall, der Rest behandelt den Fall,
dass es für eine Lib inzwischen ein neu benamtes Replacement gibt, aber
dieses Replacement, aus welchen Gründen auch immer, noch nicht installiert
ist, obwohl auch ein Require auf den neuen Namen schon durch die
installierten Pakete gegeben ist.
Keine Ahnung, ob dieser Fall überhaupt ohne manuelle Eingriffe eintreten
kann, ich dies aber zumindest abdecken will - was Checks in Skripten angeht,
bin ich da durchaus etwas paranoid.
Irgendwie habe ich gestern gemerkt, dass dieser Teil, möglicherweise auch
durch optische Änderungen im eisman-Output nicht ganz sauber war und auch
nicht mehrfache Paketumbenennung berücksichtigte.
Daher habe ich das ganze mal überarbeitet (Zeilesprünge beachten):
#/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
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
--
Gruß Marcus
[eisfair-Team]
Mehr Informationen über die Mailingliste Eisfair