Table des matières

Prioriser des dépôts backports sous Debian

Cas d'utilisation

J'utilise la version stable de Debian. Malheureusement certaines applications sont dans des versions trop anciennes ce qui les rend utilisables (dans mon cas yt-dlp). Il s'agit d'un cas bloquant (téléchargements impossibles). Je ne souhaite pas bénéficier de nouvelles fonctionnalités apportées par les nouvelles versions mais simplement disposer d'application fonctionnelle.

La procédure décrite vise à récupérer dans le dépôt backports des versions récentes de l'application souhaitée. Elle a été testée sous Debian bookworm.

Commandes seules

Elles s'appliquent à mon cas d'utilisation et supposent qu'aucune erreur n'est commise (aucune vérification).

# nano /etc/apt/sources.list
>>>> ajout des 2 lignes
deb https://deb.debian.org/debian bookworm-backports main
deb-src https://deb.debian.org/debian bookworm-backports main
>>> enregistrer/quitter
# touch /etc/apt/preferences.d/99debian-backports
# nano /etc/apt/preferences.d/99debian-backports
>>>> ajout des 3 lignes
Package: yt-dlp
Pin: release n=bookworm-backports
Pin-Priority: 990
>>> enregistrer/quiter
# apt update
# apt install yt-dlp

Et c'est tout :-) La suite de la fiche détaille et explique le pourquoi de chaque commande. Elle présente également comment contrôler la configuration du système de mise à jour.

Ajouter les dépôts backports

Source : Debian Backports ›› Instructions (en) (debian.org)

Configuration initiale

La configuration de base des dépôts pour un poste bureautique et multimédia sous Debian est facilement consultable grâce à la commande cat :

$ cat /etc/apt/sources.list

Voici à quoi ressemble le contenu du fichier /etc/apt/sources.list pour la version bookworm (aka stable au moment de la rédaction) :

deb https://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware

deb https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
deb-src https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

deb https://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware

Ajout des dépôts backports

L'opération consiste à ajouter les deux lignes suivantes, à la fin du fichier sources.list :

deb https://deb.debian.org/debian bookworm-backports main
deb-src https://deb.debian.org/debian bookworm-backports main

Le nom de la version de Debian (ici bookworm) sera remplacé par celui de la version installée sur l'ordi. On constate qu'à la différence des dépôts déjà configurés, seul le composant main est utilisé. Cela découle du choix de m'écarter aussi peu que nécessaire d'une configuration bureautique standard.

Chacune utilisera sa technique préférée pour éditer les fichiers système.

Perso, j'édite le fichier à l'aide de la commande sudoedit :

$ sudoedit /etc/apt/sources.list

Après ajout des deux lignes voulues, le contenu du fichier est sans surprise :

deb https://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware

deb https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
deb-src https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

deb https://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware
deb-src https://deb.debian.org/debian/ bookworm-updates main contrib non-free non-free-firmware

deb https://deb.debian.org/debian bookworm-backports main
deb-src https://deb.debian.org/debian bookworm-backports main

Description et priorité des dépôts configurés

Il s'agit de s'assurer que la nouvelle configuration des dépôts est prise en compte :

$ sudo apt update
$ apt policy

Affichera toutes les sources répertoriée en fournissant des informations cruciales. Dans le cas qui nous intéresse, les deux blocs qui retiennent notre attentions sont les suivants :

…
500 https://deb.debian.org/debian bookworm/main amd64 Packages
     release v=12.6,o=Debian,a=stable,n=bookworm,l=Debian,c=main,b=amd64
     origin deb.debian.org
…
100 https://deb.debian.org/debian bookworm-backports/main amd64 Packages
     release o=Debian Backports,a=stable-backports,n=bookworm-backports,l=Debian Backports,c=main,b=amd64
     origin deb.debian.org
…

On relève 2 choses :

En l'absence d'autres paramétrages, la priorité attribuée à un dépôt s'applique à tous les paquetages de ce dépôt.

Dans ces conditions, les règles de priorité font qu'on peut continuer à faire les installations et les mises à jours comme si on n'avait ajouté aucun dépôt. C'est flagrant pour le paquetage yt-dlp. Le système détecte la présence d'une version plus récente sur le dépôt backports mais il installerait (“Candidat”) la version du dépôt standard si on lançait l'installation.

$ apt policy yt-dlp
yt-dlp:
  Installé : (aucun)
  Candidat : 2023.03.04-1
 Table de version :
     2024.07.09-1~bpo12+1 100
        100 https://deb.debian.org/debian bookworm-backports/main amd64 Packages
     2023.03.04-1 500
        500 https://deb.debian.org/debian bookworm/main amd64 Packages

Modifier les priorités nécessaires

Source : AptConfiguration (en) (debian.org)

Mon objectif est qu'une demande d'installation du paquetage yt-dlp installe la version du dépôt backports. De plus, je souhaite que la gestion des mises à jour de ce paquetage soit intégrée, de manière transparente, à la gestion des mises à jour système : détection, alarmes, commandes de mises à jour.

Sous Debian, la manière propre de procéder consiste à modifier la gestion des priorités. Je veux que cette modification ne touche que le(s) paquetage(s) que j'aurai choisi(s), ici yt-dlp.

Ajout d'un fichier ciblé

Sur un système vierge on va ajouter un fichier qui contiendra les 3 lignes suivantes :

Package: yt-dlp
Pin: release n=bookworm-backports
Pin-Priority: 990

Cela signifie, que toute demande concernant le paquetage yt-dlp devra, sauf mention contraire, considérer le dépôt bookworm-backports comme prioritaire (990) sur ceux qui sont fournis par le dépôt standard (500). Bien sûr les noms de dépôts devront être remplacés par ceux de la version de Debian utilisée.

La création du fichier et l'ajout des 3 lignes voulues est sans surprise :

sudo touch /etc/apt/preferences.d/99debian-backports
sudoedit /etc/apt/preferences.d/99debian-backports

>>>>>>>>>> insérer les lignes et enregistrer!

Prise en compte des nouvelles priorités

La commande utilisée précédemment permet de tester la nouvelle configuration des priorités :

$ apt policy yt-dlp
yt-dlp:
  Installé : (aucun)
  Candidat : 2024.07.09-1~bpo12+1
 Table de version :
     2024.07.09-1~bpo12+1 990
        100 https://deb.debian.org/debian bookworm-backports/main amd64 Packages
     2023.03.04-1 500
        500 https://deb.debian.org/debian bookworm/main amd64 Packages

On constate que le candidat à l'installation est désormais le paquetage fourni par le dépôt backports.

Installation

L'installation peut désormais se faire par les moyens qu'on utilise habituellement, par exemple en ligne de commande :

sudo apt install yt-dlp

Quelques remarques

Dans l'exemple traité, il m'a suffit de modifier les priorités d'un seul paquetage : celui que je voulais installer. C'est un cas très favorable. Dans le cas contraire, des messages d'avertissement signaleront les dépendances non résolvables.

En effet, un paquetage de backports peut dépendre de versions d'autres paquetages qui sont dans backports et ainsi de suite… Il faut alors ajouter autant de règles de priorité que de paquetages concernés par la chaîne des dépendances.

L'équipe de maintenance de Debian s'efforce de limiter les dépendances grâce à un travail de re-packaging. En effet, le nom “backports” souligne que le paquetages qui s'y trouvent sont des rétro-portages de paquetages provenant de la version sid de Debian. Cela éclaire deux choses.

D'une part les versions des logiciels présents dans les backports pour la version stable peuvent être plus récents que ceux qui seront intégrés à la prochaine version stable. On a donc plus d'un coup d'avance !

D'autre part, le travail minutieux de re-packaging est nécessairement limité à un nombre limité de paquetages. Il est compréhensible que yt-dlp ait bénéficié de ce rétro-portage. Il est activement développé et utilisé, et les anciennes versions sont rapidement inutilisables1) :-O

Enfin, cette fiche se limite aux dépôts officiels de Debian, utilisés dans des conditions prévues et garanties par Debian. En termes de dépôts, je suis restée campée dans la version de Debian installée sur l'ordi. Il est possible d'aller piocher dans les dépôts d'autres versions de Debian2) que stable (oldsatble, unstable, sid…) pour faire son propre assemblage de paquetages qui n'ont pas été prévus ni packagés pour fonctionner ensemble et ne sont pas maintenus en ce sens.

1)
La faute aux plateformes, pas à la qualité du code !
2)
Sans parler d'autres distributions…