====== 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 : [[https://backports.debian.org/Instructions/| 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 : [[https://wiki.debian.org/AptConfiguration|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 inutilisables((La faute aux plateformes, pas à la qualité du code !)) :-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 Debian((Sans parler d'autres distributions…)) 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.