La vostra Debian comincia a dare segni di lentezza nell’installazione o rimozione di nuovi pacchetti tramite dpkg?
Questo accade poiché la cartella /var/lib/dpkg/info/ è intasata da migliaia di file .list che si accumulano ad ogni vostra operazione.
Il sig Luca Bruno ha pensato bene di affidarne la gestione ad un database. A quanto pare non è stato ascoltato dai mantainer e ha così creato il suo progetto autonomo tdpkg.
Come database possibile utilizzare tokyocabinet (più rapido) o sqlite.
Si tratterebbe di una libreria che intercetta le chiamate di dpkg caricata attraverso LD_PRELOAD.
L’autore dichiara un notevole incremento nelle prestazioni.
Ecco come provare tdpkg sulla nostra Debian (useremo la consigliata tokyocabinet):
Installiamo le dipendenze necessarie:
$ apt-get install build-essential libtokyocabinet-dev
Procuriamoci i sorgenti e scompattiamoli nella nostra home:
Download
Compiliamo la libreria:
$ cd tdpkg-1.0 $ make
Utilizzo:
Creiamo prima una copia di sicurezza di /var/lib/dpkg/info/ :
$ su $ cp -r /var/lib/dpkg/info ~/Desktop/
Possiamo utilizzarlo manualmente per ogni singola operazione con il comando:
$ cd ~/tdpkg-1.0 $ LD_PRELOAD=./libtdpkg.so dpkg ...
O per tutte le operazioni della sessione corrente tramite l’alias (unalias per rimuoverlo):
$ alias dpkg="LD_PRELOAD=~/tdpkg-1.0/libtdpkg.so dpkg"
Ogni volta quindi che verrà invocato il comando dpkg per installare/rimuovere/reinstallare un pacchetto verrà utilizzato il database tokyocabinet.
Se vogliamo che l’alias venga mantenuto dopo il riavvio dobbiamo salvare il comando nel file nascosto /home/.bashrc (gedit ~/.bashrc).
La cache di tokyocabinet verrà inserita in /var/lib/dpkg/info/tdpkg.cache.
Sul sito del progetto è inserita anche la metodologia per il benchmarking.
Io lo testerò nei prossimi giorni, sappiatemi dire come vi trovate 🙂
claudio says
ok, lo sto provando sulla mia ubuntu karmic:-) tra qualche giorno vi farò sapere come è andata (ho un laptop abbastanza datato, quindi la differenza di performances dovrebbe risultare più evidente)