TIP Accélérer la recherche dans Portage

Un article de Gentoo Linux Wiki.

Cet article fait partie des Trucs et Astuces.

Terminaux / Shells CD Live X Portage Système Systèmes de fichier Autres

Sommaire

[modifier] Introduction

Lors d'une recherche parmis les paquets disponibles, 'emerge' doit parcourir en profondeur l'ensemble du répertoire /usr/portage. Ces nombreux accès au disque-dur ont pour effet de rendre l'opération particulièrement lente et pénible à la longue. Pour rendre la recherche plus rapide et agréable, la solution la plus courante est d'utiliser un index de recherche. La création d'un index demande un peu de temps, mais permet ensuite d'accélérer sensiblement l'accès aux donnés indexées (comme c'est le cas pour les bases de données, par exemple). Le paquet 'esearch' apporte justement les outils permettant de créer et d'interroger un tel index, afin de faciliter la recherche parmis les ebuilds.

[modifier] Comment faire ?

Il faut tout d'abord installer le paquet 'esearch'.

emerge esearch
Code : Générer l'index d'esearch
eupdatedb 

cela prend un certain temps l'hors de la première utilisation. ( 30 secondes sur un Linux P4 2.6.19-gentoo-r5, i686 Intel(R) Pentium(R) 4 CPU 3.00GHz GenuineIntel GNU/Linux )

Lancez eupdatedb aussi souvent que vous utilisez emerge sync pour garder à jour l'index d'esearch

[modifier] Alternative à emerge sync
esync 

cela permet de lancer les deux commandes emerge sync et eupdatedb

Ensuite utilisez

Code : Recherche par nom
esearch foo à la place de emerge -s foo 

et

Code : Recherche par description
esearch -S foo à la place de emerge -S foo 


[modifier] Résultat

Esearch est un outil qui vous fera gagner du temps à la recherche dans portage... pour vous convaincre voici quelques chiffres.

( Testé sur un Pentium4 3ghz, 2go ram )

# time esearch portage 
real    0m0.139s
user    0m0.116s
sys     0m0.012s
# time emerge -s portage
real    0m1.245s
user    0m1.056s
sys     0m0.164s

# time esearch -S portage
real    0m0.171s
user    0m0.148s
sys     0m0.020s
# time emerge -S portage
real    0m24.229s
user    0m21.869s
sys     0m2.204s

[modifier] A retenir

  • esync, pour une synchronisation de l'arbre de portage et une mise à jour de l'index d'esearch
  • esearch foo, pour une recherche par nom
  • esearch -S foo, pour une recherche par description.
Autres langues