SDB:Accélérer le gestionnaire de paquets

Aller à : navigation, rechercher


Version: 10.3 -

Accélérer le gestionnaire de paquets

La gestion des paquets utilise un système de base de données. En raison de la nature incrémentielle des modifications, la base de données va se fragmenter de manière interne (le fichier de base de données) et physique (sur le disque dur).

OpenSUSE 10.3 propose 2 types de gestion de paquets.

  • Le cache de zypp (base de données SQLITE) dans /var/cache/zypp/zypp.db
  • La base de données RPM dans /var/lib/rpm/

Defragmentation de la base de données

  • Pour la base de données du cache de zypp, le nettoyage peut être réalisé avec la commande VACUUM.
sqlite3 /var/cache/zypp/zypp.db vacuum
  • Defragmentation de la base de données RPM, utile après de nombreux changements/mises à jours/installations de paquetages.
rpm --rebuilddb
Ceci peut prendre quelques minutes.

Defragmentation physique

Même si Linux n'y est pas trop sujet, le nombre de modifications opérées sur le fichier de la base de données au cours du temps rend une défragmentation de ce fichier utile.

La meilleure façon de défragmenter est de recréer les fichiers selon le modèle suivant:

cp file file.new  # check for errors!
rm file
mv file.new file
  • Base de données zypp
Soit la supprimer et la régénérer rm /var/cache/zypp/zypp.db ; zypper refresh
Soit utiliser le schéma précedent cp/rm/mv sur /var/cache/zypp/zypp.db.
  • Base de données RPM
Utiliser le schéma cp/rm/mv sur /var/lib/rpm/Packages, Basenames, Filemd5s, Dirnames

Exemple de script

#!/bin/sh
sqlite3 /var/cache/zypp/zypp.db vacuum
rpm --rebuilddb         # prends du temps
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

<keyword>zypp,rpm,vitesse,gestionnaire de paquets</keyword>