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 :
- Le dépôt standard pour le composant main, “bookworm/main”, est prioritaire (500) sur son équivalent backports, “bookworm-backports/main”, qui l'est moins (100).
- Le nom système du dépôt backports apparaît dans “n=bookworm-backports”. On aura besoin de ce nom.
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)
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.