# Rétroporter un paquet

**URL:** <https://www.debian-fr.org/t/retroporter-un-paquet/63532>\
**Category:** Trucs et Astuces\
**Created:** [Février 21, 2016, 8:47 UTC](https://www.debian-fr.org/t/retroporter-un-paquet/63532 "2016-02-21T20:47:38Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![anon96191775](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/71c47a/32.png) [@anon96191775](https://www.debian-fr.org/u/anon96191775)\
**Post date:** [Février 21, 2016, 8:47 UTC](https://www.debian-fr.org/t/retroporter-un-paquet/63532/1 "2016-02-21T20:47:38Z")

</div>

Il arrive parfois lorsqu’on utilise une Debian stable qu’on ait envie d’utiliser un paquet ou une version de paquet disponible uniquement en testing. Parfois ce paquet se trouve dans les dépôts stable-backports, mais on n’a pas toujours cette chance.

Ce guide va vous donner la méthode pour rétroporter vous-même un paquet présent en testing sur une Debian stable. Pour l’exemple j’ai choisi le paquet [tunesviewer](https://packages.debian.org/jessie/tunesviewer) présent uniquement à partir de Jessie que je vais compiler sur une Wheezy.

Pré-requis :

Pour tout rétroportage le paquet [dpkg-dev](https://packages.debian.org/wheezy/dpkg-dev) doit être installé, et la liste des codes-sources des paquets de la testing doit être connue du système. Pour Jessie, ajoutez les deux lignes suivantes au fichier /etc/apt/sources.list puis lancez un [mono]# apt-get update[/mono] :

`deb-src http://ftp.fr.debian.org/debian/ jessie main
deb-src http://security.debian.org/ jessie/updates main`

Rétroportage :

La récupération des dépendances de compilation du paquet est gérée automatiquement par APT, avec la commande suivante :

```auto

```

La compilation elle-même peut-être réalisée sans droits root, avec cette série de commandes :

`$ apt-get source tunesviewer
$ cd tunesviewer-1.4.99.2
$ dpkg-buildpackage -b -uc`  
Le paquet construit se trouve dans le répertoire d’où vous avez lancé la commande [mono]$ apt-get source tunesviewer[/mono] et peut-être installé ainsi que ses dépendances avec les commandes suivantes :

[code]# dpkg -i tunesviewer\_1.4.99.2-1\_all.deb

# apt-get -f install[/code]

Dépendance manquante :

Si lors de la commande [mono]# apt-get build-dep paquet[/mono] APT retourne une erreur selon laquelle un paquet ne peut être trouvé dans les dépôts de Wheezy, cette dépendance de compilation doit elle-même être rétroportée suivant cette méthode puis être installée avant de pouvoir vous attaquer au paquet qui vous intéresse vraiment.

* * *

fran.b donne un peu plus bas la marche à suivre en cas de difficultés supplémentaires :  
[retroporter-un-paquet-t49698.html#p495590](https://www.debian-fr.org/retroporter-un-paquet-t49698.html#p495590)

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 21, 2016, 8:47 UTC](https://www.debian-fr.org/t/retroporter-un-paquet/63532/2 "2016-02-21T20:47:38Z")

</div>

Très bonne idée ce tuto car la question est souvent posée.  
Dorénavant, un lien suffira.

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 21, 2016, 8:47 UTC](https://www.debian-fr.org/t/retroporter-un-paquet/63532/3 "2016-02-21T20:47:39Z")

</div>

Plusieurs remarques:  
faire

`fakeroot dpkg-buildpackage -b -uc`afin de ne pas refaire les sources en même temps et de ne pas signer le paquet. Il est important de ne pas travailler en root. Un makefile mal foutu peut torpiller une installation si il est fait en root.

Il peut y avoir des difficultés que l’on règle au fur et à mesure. Pour reprendre la compilation, faire

```auto

```

Plusieurs difficultés peuvent arriver:

- Mauvaise version de deb-helper, editer dans ce cas le fichier debian/compat et abaisser la version exigée. Il y aura peut être des grincements de dents.
- Le paquet d’une dépendance existe mais pas dans la version adequate, ou vous en avez marre de retroporter 170 paquets. Vous pouvez passer outre les dépendances nécessaires en rajoutant l’option -d:

`fakeroot dpkg-buildpackage -d -b -uc`Très souvent cela marche, cela peut aussi fournir une version ayant moins d’options mais suffisantes pour vos besoins.

- Vous désirez modifier les options de compilation. Editez le fichier debian/rules en y adaptant vos options.

---

<div class="post-metadata">

**Author:** ![vohu](https://www.debian-fr.org/user_avatar/www.debian-fr.org/vohu/32/4108_2.png) [@vohu](https://www.debian-fr.org/u/vohu)\
**Post date:** [Février 21, 2016, 8:47 UTC](https://www.debian-fr.org/t/retroporter-un-paquet/63532/4 "2016-02-21T20:47:39Z")

</div>

J’ai d’ailleurs une question concernant les dépots de sources debian :

Lorsqu’on consulte le site, on voir sur le coté droit de l’écran plusieurs fichiers concernant les sources :  
[paquet\_0.x-y.dsc]  
[paquet\_0.x.orig.tar.gz]  
[paquet\_0.x-y.diff.gz]

Un fichier orig et un diff. Qu’est vraiment l’archive orig ?

apt-get source donne le fichier orig ou applique le diff dessus ?

---

<div class="post-metadata">

**Author:** ![anon96191775](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/71c47a/32.png) [@anon96191775](https://www.debian-fr.org/u/anon96191775)\
**Post date:** [Février 21, 2016, 8:47 UTC](https://www.debian-fr.org/t/retroporter-un-paquet/63532/5 "2016-02-21T20:47:39Z")

</div>

[quote=“fran.b”]Plusieurs remarques:  
faire

```auto

```

Sauf erreur de ma part dpkg-buildpackage fait déjà appel à fakeroot, et les commandes sont déjà notées comme à lancer avec un simple utilisateur. J’ajoute par contre les switchs [mono]-b -uc[/mono], et te remercie de m’avoir appris pourquoi j’obtenais toujours cet avertissement au sujet de clés privées manquantes.

[quote=“fran.b”]Il peut y avoir des difficultés que l’on règle au fur et à mesure. Pour reprendre la compilation, faire

```auto

```

Plusieurs difficultés peuvent arriver:

- Mauvaise version de deb-helper, editer dans ce cas le fichier debian/compat et abaisser la version exigée. Il y aura peut être des grincements de dents.
- Le paquet d’une dépendance existe mais pas dans la version adequate, ou vous en avez marre de retroporter 170 paquets. Vous pouvez passer outre les dépendances nécessaires en rajoutant l’option -d:

`fakeroot dpkg-buildpackage -d -b -uc`Très souvent cela marche, cela peut aussi fournir une version ayant moins d’options mais suffisantes pour vos besoins.

- Vous désirez modifier les options de compilation. Editez le fichier debian/rules en y adaptant vos options.[/quote]  
Comme je me sens un poil fainéant, je vais me contenter d’un lien vers ton message 😉

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 21, 2016, 8:47 UTC](https://www.debian-fr.org/t/retroporter-un-paquet/63532/6 "2016-02-21T20:47:41Z")

</div>

Je m’y suis peut-être mal pris, mais il m’est arrivé pour certaines applications de voir lors d’un [mono]apt-get build-dep paquet[/mono] une proposition d’upgrade de la libc6… Ça arrive ou c’est juste moi qui suis dans les choux?  
Bon forcément je n’ai plus le paquet en tête…

---

<div class="post-metadata">

**Author:** ![anon96191775](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/71c47a/32.png) [@anon96191775](https://www.debian-fr.org/u/anon96191775)\
**Post date:** [Février 21, 2016, 8:47 UTC](https://www.debian-fr.org/t/retroporter-un-paquet/63532/7 "2016-02-21T20:47:41Z")

</div>

thuban :  
Ce genre de situation ne peut pas arriver si tu n’ajoutes que les lignes [mono]deb-src[/mono] pour testing. Par contre si tu ajoutes les lignes [mono]deb[/mono], même avec une priorité faible déclarée pour testing, un paquet dépendant pour sa construction d’une version plus récente de libc6-dev pourrait amener par le jeu des dépendances une version plus récente de libc6.

Je n’ai pas de situation de ce genre en tête, mais APT le permet.

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 21, 2016, 8:49 UTC](https://www.debian-fr.org/t/retroporter-un-paquet/63532/8 "2016-02-21T20:49:23Z")

</div>

Bon, je reprendrais ce tuto au calme plutôt que mes notes la prochaine fois, je sais où venir poser mes questions si ça ne fonctionne pas 🙂

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 21, 2016, 8:49 UTC](https://www.debian-fr.org/t/retroporter-un-paquet/63532/9 "2016-02-21T20:49:24Z")

</div>

[quote=“vv222”]thuban :  
Ce genre de situation ne peut pas arriver si tu n’ajoutes que les lignes [mono]deb-src[/mono] pour testing. Par contre si tu ajoutes les lignes [mono]deb[/mono], même avec une priorité faible déclarée pour testing, un paquet dépendant pour sa construction d’une version plus récente de libc6-dev pourrait amener par le jeu des dépendances une version plus récente de libc6.

Je n’ai pas de situation de ce genre en tête, mais APT le permet.[/quote]

En fait, en général, c’est tout simplement parce que dans les sources (source.list) il y a un libc6 plus récent (testing), or je crois bien que l’installation des -dev entraine l’installation du paquet lui même. Si ce paquet est de testing, la libc6 de testing va être installé et le retroportage sera complètement gaché. Il faut donc surtout avoir un sources.list ne contenant que le dépot sid en deb-src et les dépot stables, cela évite ce genre de soucis. Le retroportage peut être délicat, outre les soucis cités, si des fonctionnalités très récentes de la libc6 sont utilisées (ou d’une autre librairie fondamentale), le changement de la libc6 sera nécessaire dans ce cas et le retroprotage inutile (prendre le pinning). Un retroportage peut prendre beaucoup de temps dans certain cas (je me suis retrouvé une fois à devoir faire un backport complet de Xorg!!, j’ai des souvenirs pénibles de wine).

---

<div class="post-metadata">

**Author:** ![M3t4linux](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/5daacb/32.png) [@M3t4linux](https://www.debian-fr.org/u/M3t4linux)\
**Post date:** [Février 21, 2016, 8:49 UTC](https://www.debian-fr.org/t/retroporter-un-paquet/63532/10 "2016-02-21T20:49:25Z")

</div>

@vv222: tu vas envoyer ce tuto sur le wiki?

---

<div class="post-metadata">

**Author:** ![anon96191775](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/71c47a/32.png) [@anon96191775](https://www.debian-fr.org/u/anon96191775)\
**Post date:** [Février 21, 2016, 8:49 UTC](https://www.debian-fr.org/t/retroporter-un-paquet/63532/11 "2016-02-21T20:49:28Z")

</div>

> [@M3t4linux](#):
>
> @vv222: tu vas envoyer ce tuto sur le wiki?

Probablement, je vais juste le laisser mûrir ici une semaine ou deux le temps de voir si d’autres questions remontent.
