Modifier les sources d'un paquet format deb afin de le personnaliser

Vos petites astuces, répertoire des tutoriels et astuces
Répondre
Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Modifier les sources d'un paquet format deb afin de le personnaliser

Message par cyrille »

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 sur le forum, j'ai pris l'exemple d'easytag. Une demande visant à limiter la liste des genres proposés se prétant bien à cet exercice.


Installer micro pour une édition facile des fichiers (sinon nano, vim font aussi très bien l'affaire...)

Code : Tout sélectionner

sudo apt install micro
Modifier les sources.list afin d'inclure les sources : créer un fichier :

Code : Tout sélectionner

sudo micro  /etc/apt/sources.list.d/official-source-repositories.list 
Avec le contenu suivant

Code : Tout sélectionner

deb-src http://mirror6.layerjet.com/linuxmint/packages uma main upstream import backport 

deb-src http://ubuntu.univ-reims.fr/ubuntu focal main restricted universe multiverse
deb-src http://ubuntu.univ-reims.fr/ubuntu focal-updates main restricted universe multiverse
deb-src http://ubuntu.univ-reims.fr/ubuntu focal-backports main restricted universe multiverse

deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://archive.canonical.com/ubuntu/ focal partner
(Attention, ceux sont mes mirroirs, les votres peuvent être différents ;), ce qui compte c'est le deb-src en début de ligne )

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

Code : Tout sélectionner

sudo apt update

Installer les paquets nécessaires à la compilation de paquets debian

Code : Tout sélectionner

sudo apt install devscripts

Si on veut modifier un paquet déjà installer, commence par le desinstaller et le purger

Code : Tout sélectionner

sudo apt purge easytag


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

Code : Tout sélectionner

cd mkdir easytag && cd easytag
Récupérer les sources du paquet à modifier

Code : Tout sélectionner

apt source easytag
Ce qui donne après téléchargement

Code : Tout sélectionner

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

Code : Tout sélectionner

cd easytag-2.4.3
C'est ici qu'il faudra chercher le fichier que vous souhaitez modifier afin d'apporter les modifications nécessaires. C'est sans doute une étape assez délicate mais on ne peut faire autrement...
Dans notre cas, le fichier à modifier est src/genres.h

Et apporter les modifications souhaitées

Code : Tout sélectionner

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.


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

Code : Tout sélectionner

sudo apt build-dep easytag
On apporte un NMU au changelog. C'est quoi le NMU ????
Extrait du man de bch :
Numéro de version Debian pour un envoi d'un non-responsable soit en ajoutant « .1 » à une version non-NMU (à moins qu'il s'agisse d'un paquet Debian natif, auquel cas « +nmu1 » est ajouté) soit en incrémentant un numéro de NMU. Ceci se produit automatiquement si l'auteur du paquet n'est pas dans les champs Maintainer ou Uploaders de debian/control, à moins que DEBCHANGE_AUTO_NMU soit définie à no ou que l'option --no-auto-nmu soit utilisée.

Code : Tout sélectionner

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

Code : Tout sélectionner

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
On peut ensuite construire le nouveau paquet avec les modifications apportées

Code : Tout sélectionner

debuild -b -uc -us
Le paquet debian est alors généré, il se trouve à un niveau d'arborescence supérieur.

C'est parti :

Code : Tout sélectionner

cd ..
On vérifie :

Code : Tout sélectionner

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

Il suffit alors de l'installer

Code : Tout sélectionner

sudo dpkg -i easytag_2.4.3-4build1.1_amd64.deb
Et hop c'est tout...

Code : Tout sélectionner

easytag
Montre que les modifications sont bien prises en compte
Image


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

Code : Tout sélectionner

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

Lister les paquets geler

Code : Tout sélectionner

dpkg --list | grep ^hi
hi  easytag                                    2.4.3-4build1.1                       amd64        GTK+ editor for audio file tags
Pour desinstaller le paquet

Code : Tout sélectionner

sudo dpkg -r easytag

Bon voilà, c'est pour easytag, mais le processus est le même pour tous les logiciels.....

Prochaine étape, si j'ai le temps : "Ecrire un patch pour faire cela plus proprement....." (man patch, man diff)
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Répondre