Problème
Lorsque l’on lance synaptic, celui-ci tend à ramer terriblement du fait de la mise à jour du champ Filtre rapide. Cela vient de apt-xapian-index dont le programme de mise à jour se met en marche de plus en plus systématiquement.
C’est lourd, mais on ne peut plus indispensable au bon fonctionnement de cette méthode de recherche facile de paquet qui fait le seul réel intérêt de synaptic.
Solution
Il n’y a pas de réel miracle, mais on peut améliorer les choses.
Dans /etc/fstab, passer en mémoire le répertoire de traitement de la base de données rafraîchie par update-apt-xapian-index. Ainsi accélérerons-nous au moins les entrées/sorties :
#tmpfs /var/cache/apt tmpfs defaults 0 0
#tmpfs /var/cache/apt/archives tmpfs defaults 0 0
#tmpfs /var/cache/apt/archives/partial tmpfs defaults,uid=_apt,gid=root 0 0
tmpfs /var/lib/apt/lists tmpfs defaults,uid=_apt,gid=root 0 0
Inutile de tenter les autres répertoires appartenant à apt ... ça casse plus le travail qu’autre chose.
Penser à lancer l’update en mode de simple mise à jour, plutôt qu’en rafraîchissement total de la base, ce qui va réduire les traitements inutiles : update-apt-xapian-index -u.
root@eb-pc0ke4yn:/var/lib/apt/lists# update-apt-xapian-index -u
Reading en translations from /var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_disco-security_universe_i18n_Translation-en: done.
Reading en translations from /var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_disco-security_main_i18n_Translation-en: done.
Reading en translations from /var/lib/apt/lists/fr.archive.ubuntu.com_ubuntu_dists_disco-backports_universe_i18n_Translation-en: done.
Reading en translations from /var/lib/apt/lists/fr.archive.ubuntu.com_ubuntu_dists_disco-updates_universe_i18n_Translation-en: done.
Reading en translations from /var/lib/apt/lists/fr.archive.ubuntu.com_ubuntu_dists_disco-updates_main_i18n_Translation-en: done.
Reading fr translations from /var/lib/apt/lists/fr.archive.ubuntu.com_ubuntu_dists_disco_multiverse_i18n_Translation-fr: done.
Reading en translations from /var/lib/apt/lists/fr.archive.ubuntu.com_ubuntu_dists_disco_multiverse_i18n_Translation-en: done.
Reading fr translations from /var/lib/apt/lists/fr.archive.ubuntu.com_ubuntu_dists_disco_universe_i18n_Translation-fr: done.
Reading en translations from /var/lib/apt/lists/fr.archive.ubuntu.com_ubuntu_dists_disco_universe_i18n_Translation-en: done.
Reading en translations from /var/lib/apt/lists/fr.archive.ubuntu.com_ubuntu_dists_disco_restricted_i18n_Translation-en: done.
Reading fr translations from /var/lib/apt/lists/fr.archive.ubuntu.com_ubuntu_dists_disco_restricted_i18n_Translation-fr: done.
Reading fr translations from /var/lib/apt/lists/fr.archive.ubuntu.com_ubuntu_dists_disco_main_i18n_Translation-fr: done.
Reading en translations from /var/lib/apt/lists/fr.archive.ubuntu.com_ubuntu_dists_disco_main_i18n_Translation-en: done.
Reading Xapian index: done.
Updating Xapian index: done.
root@eb-pc0ke4yn:/var/lib/apt/lists# update-apt-xapian-index -u
Another update is already running: showing its progress.
Reading fr translations from /var/lib/apt/lists/fr.archive.ubuntu.com_ubuntu_dists_disco_main_i18n_Translation-fr: done.
Reading en translations from /var/lib/apt/lists/fr.archive.ubuntu.com_ubuntu_dists_disco_main_i18n_Translation-en: done.
Reading Xapian index: done.
Updating Xapian index: done.
root@eb-pc0ke4yn:/var/lib/apt/lists#</code
update-apt-xapian-index, a l'intelligence de savoir quand il est déjà lancé et affiche la progression de la session en cours si on la lance en ligne de commande.
Afin d'être réellement bloqué dans synaptic par la mise à jour, modifier le script de lancement de synaptic en prélançant la mise à jour de xapian-index.
<code>mv /usr/sbin/synaptic /usr/sbin/synaptic-execution
pluma /usr/sbin/synaptic
Le code de cette nouvelle commande sera :
# cat /usr/sbin/synaptic
#!/bin/sh
/usr/sbin/update-apt-xapian-index -u
#pkexec "/usr/sbin/synaptic" "$@"
/usr/sbin/synaptic-execution $@
Il est inutile de modifier le code de /usr/bin/synaptic-pkexec.
Evolutions possibles
Il faudra aller dans le code de /usr/sbin/update-apt-xapian-index et plus précisément /usr/lib/python3/dist-packages/axi/indexer.py pour lancer en parallèle les mises à jour d’index. C’est scripté en python.
Liens
Eviter que update-apt-xapian-index monopolise toutes les ressources
Faites de la programmation parallèle avec threading