La plupart des applications utilisent des bibliothèques partagées (« shared libraries »). Ces bibliothèques partagées ont besoin d’être chargées en mémoire lors de l’exécution de l’application et les références aux différents symboles doivent être résolues. Pour la plupart des petits programmes, cette liaison dynamique est très rapide. Mais pour les programmes écrits en C++ qui ont beaucoup de dépendances, la liaison dynamique peut prendre un temps considérable.
Sur la plupart des systèmes, les bibliothèques ne changent pas souvent et quand un programme est en cours d’exécution l’opération de liaison est toujours la même. Le prelink utilise ceci à son avantage en évitant la liaison et en l’enregistrant dans l’exécutable.
Le prelink peut raccourcir le temps de démarrage des applications. Par exemple, le temps de chargement d’un programme KDE normal peut être réduit de plus de 50%. La seule opération de maintenance nécessaire est de ré-exécuter prelink chaque fois qu’une bibliothèque est mise à jour pour un exécutable prelinké.
Prelink se trouve dans le dépôt universe.
sudo apt-get -y install prelink
PRELINKING=unknown
par PRELINKING=yes
.sudo sed -i 's/PRELINKING=unknown/PRELINKING=yes/' /etc/default/prelink
sudo /etc/cron.daily/prelink
Par la suite, prelink lance un recalcul (généralement de moins d'une minute) chaque jour, généralement à minuit. Tous les 14 jours, un recalcul complet est effectué. Après la mise à jour d'une bibliothèque, prelink est également lancé sur tous les programmes utilisant cette bibliothèque.
À chaque fois que vous faites une mise à jour majeure incluant des bibliothèques utilisées par tout le système (libc6, glibc, major gnome/X libs, etc etc etc) et que vous rencontrez des erreurs fatales, relancez la dernière étape.
Vous pouvez aussi automatiser le lancement de prelink après l'installation d'un nouveau programme, avec les droits administrateur. Pour cela :
DPkg::Post-Invoke {"echo Pré-raccordement des bibliothèques en cours, veuillez patienter...;/etc/cron.daily/prelink";}
ou en ligne de commande directement
# Pour Ubuntu actuel echo 'DPkg::Post-Invoke {"echo Pré-raccordement des bibliothèques en cours, veuillez patienter...;/etc/cron.daily/prelink";}'|sudo tee -a /etc/apt/apt.conf.d/98prelink # Pour ubuntu Gutsy ou antérieur echo 'DPkg::Post-Invoke {"echo Pré-raccordement des bibliothèques en cours, veuillez patienter...;/etc/cron.daily/prelink";}'|sudo tee -a /etc/apt/apt.conf
Pour retirer le prelinking, changez yes
par no
à l'étape 5 et relancez l'étape 8.