,

Comment appliquer un *.debdiff à un paquet

Il arrive que sur Launchpad, certains développeurs postent des fichiers *.debdiff pour résoudre le bug. Ces fichiers contiennent en fait une liste des changements du paquet par rapport à l'ancien, dans notre cas, ce sont les modifications qui ont été appliquées au paquet deb pour résoudre le bug. On va donc apprendre à appliquer ce debdiff pour avoir un nouveau paquet fonctionnel.

La marche à suivre est simple: récupération de la source du paquet, création du paquet original, récupération du debdiff, recompilation du paquet suivant le debdiff, installation du paquet, bonheur. Rassurez vous, c'est très simple.

Dans la suite du tutoriel, nous appellerons le paquet à traiter PAQUET. Pensez donc à bien remplacer PAQUET par le paquet que vous souhaitez traitez.

Exemple : Je veux appliquer mon debdiff à Rhythmbox : mon deb s'appelle sûrement rhythmbox0.11.5-ubuntuxxx, mais le nom du paquet reste rhythmbox. Je remplace donc PAQUET par rhythmbox tout le temps.

Outils de constructions

Tout ce qui va nous servir à compiler notre paquet.

sudo apt-get install build-essential fakeroot devscripts
Créer le répertoire de travail (optionnel)

Je vous conseille de le faire, ça rendra votre travail plus clair.

mkdir PAQUET && cd PAQUET
Récupérer le *.debdiff

Si ce n'est déjà fait :

wget http://URL... 
Récupérer la source du paquet

Notez qu'il n'est pas nécessaire de le faire en sudo, puisqu'on n'installe rien.

apt-get source PAQUET
Récupérer les dépendances du paquet

Toutes les librairies nécessaires à la compilation du paquet.

sudo apt-get build-dep PAQUET
Appliquer le debdiff

Ici, on applique le debdiff dans le répertoire source de notre paquet. Pensez à remplacer DEBDIFF par le nom de votre fichier debdiff.

cd PAQUET-* && patch -p1 < ../DEBDIFF
Compiler le nouveau paquet

Régénération du paquet avec les nouvelles modifications.

debuild -uc -us
Installer le nouveau paquet

Et enfin…

sudo dpkg -i ../PAQUET*.deb

Et voilà, si tout s'est bien passé vous disposez à présent de la version mise à jour du paquet. Notez que certaines étapes (la récupération des sources, la compilation) peuvent prendre pas mal de temps.

Exemple
sudo apt-get install build-essential fakeroot devscripts
cd /tmp
wget http://librarian.launchpad.net/4941195/vino_2.16.0-0ubuntu2.1.dsc.debdiff
apt-get source vino
sudo apt-get build-dep vino
cd vino-*
patch -p1 < ../vino_2.16.0-0ubuntu2.1.dsc.debdiff
debuild -uc -us
sudo dpkg -i ../vino*.deb

Contributeurs : Steph/orkerone, d'après la documentation originale.