Ceci est une ancienne révision du document !



(Re)compiler un logiciel des dépôts

Pour quoi faire ?

  • Si vous voulez patcher un logiciel ou le modifier
  • Si vous voulez ajouter des support optionnels qu'offre le logiciel, mais dont la version packagé n'a pas été compilé avec ces options.
  • Si vous voulez apprendre tout simplement.

Pour cette manipulation, il est important que le logiciel soit présent dans les dépôts et que les sources soient aussi disponibles.

Descriptif rapide de la manipulation :

  1. Télécharger les sources depuis les depôts
  2. Installer les headers et les bibliothèques nécessaires pour compiler le logiciel.
  3. Effectuer les modifications sur les sources.
  4. Construire notre paquet modifié.

Les préparatifs

Tout d'abord il faut installer les logiciels pour compiler c'est à dire un compilateurs et des outils pour la compilation, ainsi que les utilitaires APT dont nous allons nous servir.

installez les paquets build-essential, dpkg-dev, fakeroot. Soit plus simplement les lignes de commandes suivantes :

sudo apt-get install build-essential dpkg-dev fakeroot

Ensuite il faudra récupérer les sources depuis un dépôt APT, pour cela il faut ajouter une ligne deb-src du dépôt correspondant au package binaire.

Par exemple si le logiciel est dans main, il faut ajouter cette ligne (qui est un exemple qui ne marchera pas, je suppose que vous savez de quoi je parle) dans votre /etc/apt/sources.list

deb-src http://url distribution main

Ensuite on update la liste des paquets :

sudo apt-get update

Récupération des sources, et installations de dépendances

Dans cet exemple je modifie le paquet vlc. Pour récupérer les sources on fait simplement :

apt-get source vlc

Et pour installer les paquets pour compiler vlc (remarquez que la plupart de ces dépendances finissent en -dev, en fait ce sont souvent les #includes que vous voyez dans les sources C, ils se trouvent dans /usr/include) Une commande très pratique : (Notez aussi qu'on a pas eu besoin de sudo pour télécharger les sources, ni pour compiler d'ailleurs)

sudo apt-get build-dep vlc

Les sources seront installées dans le répertoire a partir duquel vous avez lancé le apt-get source.

Normalement les sources sont dé-archivés automatiquement par dpkg-source (de dpkg-dev) Si ce n'est pas le cas, il faudra le faire à la main.

Ensuite déplaçons nous dans le dossier des sources :

cd vlc*

Modification des sources

Maintenant que vous avez les sources, vous pouvez les modifier, les patcher etc.

Ensuite on va lancer la compilation. Toute la compilation sera gérée par le script debian/rules. Dans ce script il y a surement une ligne qui lance les paramètres du ./configure, vous pouvez aussi modifier cette ligne. (Ce script est fait par le mainteneur du paquet, donc suivant la personne il peut être présenté de manière différente où dans plusieurs fichier etc, donc je ne peux pas être plus explicite).

Compilation, création du paquet et installation

Ensuite c'est vraiment un jeux d'enfant, il suffit de lancer le script, en faisant croire au script qu'on est root.

En fait ce script procède de la manière suivante :

  1. Compilation (ce qui correspond souvent au ./configure && make), généralement on peux le faire en utilisateur.
  2. Instalation (le fameux make install), sauf que là, on veux créer un paquet, donc on va faire croire qu'on est root (à cause de certain Makefiles, qui font eux aussi des tests) pour créer toute l'arborescence que va contenir le paquet. Par exemple pour vlc, il va être dans $PWD/debian/build/usr/bin/vlc, avec un sudo make install, on aurait copié vlc dans /usr/bin/vlc (d'où le sudo), mais là on veut juste créer $PWD/debian/build/urs/bin/vlc et on à la droit en tand qu'utilisateur…

Bref, ceci justifie l'utilisation de fakeroot.

Donc pour lancer la compilation et la création du paquet, une seule commande (ultime) :

fakeroot debian/rules binary

Patientez, la compilation dépend de votre machine et de la taille des sources.

Quand c'est fini (et qu'il n'y a pas eu d'erreurs), le paquet crée devrait être dans le répertoire parent ... Pour l'installer, rien de plus simple :

sudo dpkg -i ../vlc-*.deb

Et voilà, c'est simple propre et rapide. Ce n'est qu'un aperçu de ce que APT sait faire, donc je vous invite à aller plus loin, le site de debian debian.org regorge de documentation sur APT.

Bon packaging et bonnes compilations 8-)


Contributeur : philpep-tlse

  • projets/paquets/recompiler_un_logiciel_des_depots.1225146562.txt.gz
  • Dernière modification: Le 27/10/2008, 23:29
  • par 213.95.41.13