[Eisfair] Alte Lib-Pakete aufräumen
Marcus Röckrath
marcus.roeckrath at gmx.de
Sa Aug 3 15:08:17 CEST 2024
Hallo,
Marcus Röckrath wrote:
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
--
Gruß Marcus
[eisfair-Team]
Mehr Informationen über die Mailingliste Eisfair