Prelink

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.

  1. ou en ligne de commandes :
    sudo apt-get -y install prelink
  2. Éditez le fichier /etc/default/prelink avec les droits d'administrateur.
  3. Modifiez PRELINKING=unknown par PRELINKING=yes.
  4. ou en ligne de commandes :
    sudo sed -i 's/PRELINKING=unknown/PRELINKING=yes/' /etc/default/prelink
  5. Ajustez les autres options si vous savez ce que vous faites. Les options par défaut marchent bien.
  6. Lancer le premier prelinkage (le plus long) avec la commande :
    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 :

  1. créez le fichier /etc/apt/apt.conf.d/98prelink (ou si vous utilisez Gutsy ou antérieur, éditez le fichier /etc/apt/apt.conf)
  2. ajoutez dans ce fichier la ligne suivante:
    DPkg::Post-Invoke {"echo Pré-raccordement des bibliothèques en cours, veuillez patienter...;/etc/cron.daily/prelink";}
  3. Sauvegardez

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.

Sources

  • prelink.txt
  • Dernière modification: Le 28/04/2018, 11:19
  • (modification externe)