---
categories: system
title: Howto Debian backports
...

* Documentation : <https://backports.debian.org/Instructions/>

Une distribution stable de Debian garde en permanence (ou presque) les mêmes versions des logiciels (c'est le principe d'une version stable).
Certaines versions plus récentes sont néanmoins distribuées via des packages Debian de [backports](https://backports.debian.org).


## Utilisation

Pour disposer des backports, on ajoutera le dépôt Debian Backports dans un fichier `/etc/apt/sources.list.d/backports.list` :

~~~
deb http://mirror.evolix.org/debian bullseye-backports main
~~~

si besoin de `non-free` :

~~~
deb http://mirror.evolix.org/debian bullseye-backports main contrib non-free
~~~

> *Note* : Pour Debian 10, le contenu de `/etc/apt/sources.list.d/backports.list` sera :
>
> ~~~
> deb http://mirror.evolix.org/debian buster-backports main
> ~~~
>
> Pour Debian 9, le contenu de `/etc/apt/sources.list.d/backports.list` sera :
>
> ~~~
> deb http://archive.debian.org/debian/ stretch-backports main
> ~~~
>
> Pour Debian 8, le contenu de `/etc/apt/sources.list.d/backports.list` sera :
>
> ~~~
> deb http://archive.debian.org/debian/ jessie-backports main
> ~~~
>
> avec la commande suivante car les backports de Jessie ne sont plus tenus à jour (il faut donc éviter de les utiliser) :
>
> ~~~
> # echo "Acquire::Check-Valid-Until no;" > /etc/apt/apt.conf.d/99no-check-valid-until
> ~~~

La priorité des packages de Backports est de 100, cela signifie qu'ils ne seront installés que si c'est explicitement demandé.
Pour s'assurer de n'installer que les packages nécessaires *et* de recevoir ensuite les mises à jour, on utilise le _pinning APT_
en en créant le fichier `/etc/apt/preferences.d/backports`. Exemple ici pour avoir un backport du package *ansible* :

~~~
Package: *
Pin: release n=bullseye-backports
Pin-Priority: -1

Package: ansible
Pin: release n=bullseye-backports
Pin-Priority: 999
~~~

## Mise-à-jour du noyau Linux

On précisera éventuellement les sections `contrib` et `non-free` si besoin de firmwares comme *firmware-bnx2* ou *firmware-bnx2x* :

~~~
deb http://mirror.evolix.org/debian bullseye-backports main contrib non-free
~~~

avec un _pinning APT_ dans `/etc/apt/preferences.d/0-backports-defaults` :

~~~
Package: *
Pin: release n=bullseye-backports
Pin-Priority: -1

Package: linux-image-amd64 linux-base initramfs-tools firmware-linux-free firmware-bnx2 firmware-bnx2x apparmor libapparmor-perl firmware-iwlwifi
Pin: release n=bullseye-backports
Pin-Priority: 999

Package: linux-image-*
Pin: release n=bullseye-backports
Pin-Priority: 999
~~~

~~~
# apt upgrade
~~~

> *Note* : pour faire joli, vous devez supprimer `firmware-iwlwifi` sur les serveurs


## Créer une image CD netinst de stretck avec un kernel backports (DRAFT)

~~~
# apt build-dep debian-installer
~~~

~~~
# dpkg-checkbuilddeps
~~~

~~~
$ apt-get source debian-installer
$ cd debian-installer-20170615+deb9u3/build
~~~

Éditer le fichier ./build/config/amd64.cfg:

~~~
KERNELVERSION = 4.15.0-0.bpo.2-amd64
KERNELMAJOR = 4.15
~~~

Éditer le fichier ./build/config/common:

~~~
LINUX_KERNEL_ABI ?= 4.15.0-0.bpo.2
DEBIAN_RELEASE = stretch
USE_UDEBS_FROM ?= stable
~~~

Éditer le fichier ./build/sources.list.udeb.local :

~~~
deb http://deb.debian.org/debian stretch main
deb http://deb.debian.org/debian stretch main/debian-installer
deb http://deb.debian.org/debian stretch-backports main/debian-installer
~~~

~~~
# make reallyclean
# fakeroot make build_netboot
[...]
install -m 644 -D ./tmp/netboot/mini.iso dest/netboot/mini.iso
update-manifest dest/netboot/mini.iso "tiny CD image that boots the netboot installer" ./tmp/netboot/udeb.list
~~~

Si tout se passe bien, vous obtiendrez un nouvel ISO:

~~~
$ file ./tmp/netboot/mini.iso dest/netboot/mini.iso
./tmp/netboot/mini.iso: DOS/MBR boot sector; partition 2 : ID=0xef, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 240, 832 sectors; partition 3 : ID=0x1, start-CHS (0x25,0,1), end-CHS (0x2a,63,32), startsector 75776, 12288 sectors
dest/netboot/mini.iso:  DOS/MBR boot sector; partition 2 : ID=0xef, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 240, 832 sectors; partition 3 : ID=0x1, start-CHS (0x25,0,1), end-CHS (0x2a,63,32), startsector 75776, 12288 sectors
~~~

Pour copier le fichier ISO sur une clé USB:

~~~
$ cat dest/netboot/mini.iso > /dev/sdX
$ fdisk -l /dev/sdX
Disque /dev/sdX : 14,6 GiB, 15664676864 octets, 30595072 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x0421e6d7
~~~
