Gentoo aufräumen und aktuell halten
Aus Gentoo Linux Wiki
|
Inhaltsverzeichnis |
[Bearbeiten] Gentoo aufräumen
Ggf. benötigte Tools installieren: app-portage/gentoolkit app-portage/eix app-admin/localepurge
[Bearbeiten] Überflüssige Dateien entfernen
- Mit localepurge überflüssige locales entfernen.
- /var/lib/portage/world durchforsten und alle nicht benötigten Zeilen löschen.
- Nicht benötigte Programme deinstallieren
- entweder Sanft (also zu Aufräumungszwecken):
Benötigt ein vorheriges "emerge -uvDN world" , das kann u.U. lange dauern. Wenn man Zeit und Lust dafür hat, dieses ausführen und danach alle überflüssigen Pakete deinstallieren: emerge --depclean
Ohne ein "emerge -uvDN world" muß mittels "emerge --depclean --pretend" geguckt werden was weg kann und das Löschen von Hand vorgenommen werden. Danach die distfiles, mit Ausname der neuesten Paketversionen, löschen: eclean-dist - oder Radikal (zur größtmöglichen Platzgewinnung):
Geht schnell, ist aber nicht nett.
Prüfen, ob überflüssige
- Kernelquellen (/usr/src/linux -- kann einige GB ausmachen. Deinstallieren mit emerge -C oder -P)
- gcc-Versionen
- python-Versionen
- jdk/jre-versionen
vorhanden sind.
Ggf. Abhängigkeiten mit equery d '=gruppe/paket-version' prüfen und mit emerge -C löschen.
Ohne ein "emerge -uvDN" löscht ein "emerge --depclean -p" meist zu viel, daher muß man das von Hand überarbeiten.
Dann alle Distfiles löschen: rm -r /usr/portage/distfiles/*
- entweder Sanft (also zu Aufräumungszwecken):
[Bearbeiten] Alte Dateien Löschen
- Alle Module außer denen des aktuellen Kernels aus /lib/modules löschen.
- Temporäre Dateien löschen rm -r /var/tmp/* rm -r /var/cache/* rm -r /tmp/*
- In /var/log/ prüfen, ob sich große logs angesammelt haben, ggf. löschen und logrotate anpassen.
- Angefallenen Müll entfernen mit dem cruft-script.
- findcruft | tee cruft.out
- In der cruft.out nur Dateinamen lassen, die wirklich gelöscht werden sollen. Im Zweifel lieber Dateien im System lassen anstatt zu löschen!
- Den Müll nach /tmp verschieben: mvcruft cruft.out /tmp/cruft
[Bearbeiten] Portage aufräumen
Überlegen, ob portage-rsync-exludes in Frage kommen. Ggf. anwenden. Wenn man rsync-exludes gemacht hat:
#VORSICHT: Benötigt einen kompletten portage-sync; löscht alle distfiles rm -r /usr/portage/*
und
emerge --sync
[Bearbeiten] Aktuell halten
[Bearbeiten] Nur Sicherheitsupdates
Es sollten mindestens Sicherheitsupdates regelmäßig durchgeführt werden:
glsa-check -f affected
[Bearbeiten] Komplette Aktualisierung
Will man immer auf dem aktuellen Stand bleiben, hilft ein regelmäßiges:
emerge -uvDN world
Um möglichst komfortabel auf dem aktuellen Stand zu bleiben empfiehlt sich ein update-script.
[Bearbeiten] Sicherheitsupdates und Portagedrops
Für einen Kompromiß zwischen möglichst wenigen Updates und Aktualität kann man folgendes Script benutzen. Es aktualisiert jeweils diejenigen Pakete, die eine Sicherheitswarnung bekommen haben und diejenigen, deren Version nicht mehr in der Portage-Datenbank vorhanden ist, auf die aktuelle Version.
#!/bin/bash
echo "Erzeuge GLSA-Liste..."
GLSA=$(glsa-check -p affected |grep -P '\s+'|awk '{print $1}'|grep --only-matching -P '[\w-]+/[\w-]+'|sed 's/-[0-9]$//')
echo "Erzeuge Liste obsoleter Pakete..."
OBSOLETE=$(TEST_FOR_NONEXISTENT=true TEST_FOR_REDUNDANCY=false eix -Tc|grep -P '^\[[A-CE-Z].*'|grep --only-matching -P '^\[.*\].*/[\w-]+\s'|awk '{print $2}')
if [ ! "$GLSA" ]&&[ ! "$OBSOLETE" ];then
echo "Nichts abzudaten."
exit
fi
echo "Paketliste:"
echo -n $GLSA;echo -n " ";echo -n $OBSOLETE;echo
emerge $GLSA $OBSOLETE -vp
echo
echo "Updaten [ENTER] ? "
read KEY;if [ "$KEY" == "n" ];then exit;fi
#printf '\a';sleep 1;printf '\a';sleep 1;printf '\a';sleep 1;printf '\a';sleep 1
#emerge --oneshot $GLSA $OBSOLETE
#PAKETE="$GLSA
#$OBSOLETE"
PAKETE="$OBSOLETE"
for paket in $GLSA;do
emerge --oneshot $paket
done
for paket in $PAKETE;do
if [ "`TEST_FOR_NONEXISTENT=true TEST_FOR_REDUNDANCY=false eix -Tc $paket|grep -P '^\[U\]'`" ];then
emerge --oneshot $paket
fi
done
echo "Erzeuge revdep-rebuild-Liste..."
REVDEPREBUILD=$(revdep-rebuild -p|grep -P 'emerge.*$'|grep --only-matching -P '/[\w-]+'|sed 's/^\///'|sed 's/-r[0-9]*$//'|sed 's/-[0-9]*$//')
if [ ! "$REVDEPREBUILD" ];then
echo "Kein revdep-rebuild nötig"
exit
fi
echo "Paketliste:"
echo -n $REVDEPREBUILD
echo
emerge $REVDEPREBUILD -vp
printf '\a';sleep 1;printf '\a';sleep 1;printf '\a';sleep 1;printf '\a';sleep 1
printf '\a';sleep 1;printf '\a';sleep 1;printf '\a';sleep 1;printf '\a';sleep 1
emerge --oneshot $REVDEPREBUILD
#for paket in $REVDEPREBUILD;do
# emerge --oneshot $paket
#done

