SDB:Paketverwaltungsstapelspeicher beschleunigen
aus openSUSE, der freien Wissensdatenbank
Version: 10.3 -
Inhaltsverzeichnis |
Paketverwaltung beschleunigen
Die Paketverwaltung ist ein Teil des Systems, der massiv mit Datenbanken um sich wirft, die zunehmend geändert werden und stark genutzt werden. Auf Grund der ständigen Zunahme an Daten, welche in der Natur der Sache liegt, neigt die Datenbank zur Fragmentierung, sowohl intern (in der Datenbank selbst) als auch extern (auf der Festplatte).
Unter openSUSE 10.3 gibt es zwei Arten von Datenbanken für die Paketverwaltung.
- Die zypp-Zwischenspeicher-SQLITE-Datenbank unter
/var/cache/zypp/zypp.db. - Die RPM-Datenbank unter
/var/lib/rpm/.
Intern defragmentieren
- SQLite-Datenbanken lassen sich mit dem
VACUUM-Kommando aufräumen.
- Für die ZYPP-Zwischenspeicherdatenbank:
sqlite3 /var/cache/zypp/zypp.db vacuum- Alternativ lässt sich die Datenbank auch von Grund auf neu erstellen:
rm /var/cache/zypp/zypp.db ; zypper refresh
- Defragmentieren der RPM-Datenbank
- Nach ziemlich großen Aktualisierungen ist es hilfreich, einmal
rpm --rebuilddblaufen zu lassen.
- Dies ist nur nach dem Ändern/Aktualisieren/Installieren von sehr vielen Paketen notwendig und dauert einige Zeit (10 Minuten auf einem Laptop).
Extern defragmentieren
Obwohl Linux-Dateisysteme versuchen, kein stark fragmentierten Dateien zu erstellen, führt die Art des Anwachsens der von der Paketverwaltung genutzten Datenbanken zu Fragmentierungsmustern.
Der beste Weg, die Fragmentierung los zu werden ist, die verwendeten Dateien neu zu erstellen:
cp -p Datei Datei.neu # auf Fehler prüfen! rm Datei mv Datei.neu Datei
- zypp-Datenbank
- Entweder löschen Sie einfach die Datenbank und erstellen sie dann mit
zypper refreshneu, oder Sie verwenden die obige - cp/rm/mv-Sequenz für
/var/cache/zypp/zypp.db.
- RPM-Datenbank
- Wenden Sie den cp/rm/mv-Trick auf
/var/lib/rpm/Packages, Basenames, Filemd5s, Dirnamesan.
Beispielskript
#!/bin/sh
sqlite3 /var/cache/zypp/zypp.db vacuum
rpm --rebuilddb # dauert lange
for fn in /var/cache/zypp/zypp.db \
/var/lib/rpm/Packages \
/var/lib/rpm/Filemd5s \
/var/lib/rpm/Dirnames \
/var/lib/rpm/Basenames
do
cp $fn $fn.new || exit 1
rm $fn
mv $fn.new $fn
done
Keywords: zypp | rpm | speed | package management

