Table des matières

Modifier les sources d'un paquet debian afin de le personnaliser

Nota :

Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !

Modifier les sources d'un paquet debian afin de le personnaliser

Juste un how-to to pour montrer comment modifier les sources d'un paquet format deb dans le cas où vous souhaitez modifier un logiciel.

Suite à une discussion avec une connaissance, j'ai pris l'exemple d'easytag. Une demande visant à limiter la liste des genres proposés se prétant bien à cet exercice.

Pré requis

Installer micro pour une édition facile des fichiers

apt install micro

Installer les paquets nécessaires à la compilation de paquet debian ainsi que dpkg-dev (pour apt source)

apt install devscripts dpkg-dev

Modifier les sources.list afin d'inclure les sources

Supposons un sources.list de ce type (cas d'une bulleyes)

cat /etc/apt/sources.list
deb http://deb.debian.org/debian/ bullseye main contrib non-free
deb http://deb.debian.org/debian bullseye-backports main contrib non-free
 
deb http://security.debian.org/debian-security bullseye-security main contrib non-free
 
 
# bullseye-updates, to get updates before a point release is made;
# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
deb http://deb.debian.org/debian/ bullseye-updates main contrib non-free

Il suffit alors de rajouter les deb-src (préfixe)

Donc ajouter à ce fichier

deb-src http://deb.debian.org/debian/ bullseye main contrib non-free
deb-src http://deb.debian.org/debian bullseye-backports main contrib non-free

Mettre à jour la base de données d'apt

apt update
Si on veut modifier un paquet déjà installer, commencer par le desinstaller et le purger
apt purge easytag

Récupérer les sources

Créer un dossier de travail temporaire et s'y rendre

cd mkdir easytag && cd easytag

Récupérer les sources du paquet à modifier

apt source easytag

Ce qui donne après téléchargement

ls
easytag-2.4.3  easytag_2.4.3-4build1.debian.tar.xz  easytag_2.4.3-4build1.dsc  easytag_2.4.3.orig.tar.xz

Se rendre dans le dossier des sources et apporter les modifications souhaitées

cd easytag-2.4.3
micro src/genres.h

Ne garder que les 10 premières entrées du genre. Sauvegarder.

A partir de ce moment il faut régénérer un nouveau paquet format deb.

Générer un nouveau paquet debian

On commence par installer les dépendances de construction du paquet

apt build-dep easytag

On apporte un NMU au changelog

dch -n "Modification de la liste des genres. 25/02/2022. Par Cyrille<cyrille@cbiot.fr>"

On vérifie que les modifications soient bien prises en compte

cat debian/changelog 
easytag (2.4.3-4build1.1) UNRELEASED; urgency=medium

  * Non-maintainer upload.
  * Modification de la liste des genres. 25/02/2022. Par
    Cyrille<cyrille@cbiot.fr>

 -- ragnarok <ragnarok@ragnarok-VirtualBox>  Fri, 25 Feb 2022 19:01:54 +0100

Construction du nouveau paquet

On peut ensuite construire le nouveau paquet avec les modifications apportées

debuild -b -uc -us

Le paquet debian est alors généré, il se trouve à un niveau d'arborescence supérieur

cd ..
ls
easytag-2.4.3                        easytag_2.4.3-4build1.1_amd64.buildinfo  easytag_2.4.3-4build1.1_amd64.deb    easytag_2.4.3-4build1.dsc  easytag-dbgsym_2.4.3-4build1.1_amd64.ddeb   easytag-nautilus-dbgsym_2.4.3-4build1.1_amd64.ddeb
easytag_2.4.3-4build1.1_amd64.build  easytag_2.4.3-4build1.1_amd64.changes    easytag_2.4.3-4build1.debian.tar.xz  easytag_2.4.3.orig.tar.xz  easytag-nautilus_2.4.3-4build1.1_amd64.deb

Installer le nouveau paquet

dpkg -i easytag_2.4.3-4build1.1_amd64.deb

Et hop c'est tout… Si on vérifie

Prologue

Afin d'éviter une mise à jour du paquet qui ferait perdre les modifications, geler le paquet :

apt hold easytag

easytag passé en figé (« hold »).

Lister les paquets geler

dpkg --list | grep ^hi
hi  easytag   

2.4.3-4build1.1 amd64 GTK+ editor for audio file tags

Pour desinstaller le paquet

dpkg -r easytag
1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !