Modifier les sources d'un paquet format deb afin de le personnaliser
Posté : ven. 25 févr. 2022 19:33
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...)
Modifier les sources.list afin d'inclure les sources : créer un fichier :
Avec le contenu suivant
(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
Installer les paquets nécessaires à la compilation de paquets debian
Si on veut modifier un paquet déjà installer, commence par le desinstaller et le purger
Créer un dossier de travail temporaire et s'y rendre
Récupérer les sources du paquet à modifier
Ce qui donne après téléchargement
Se rendre dans le dossier des sources
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
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.
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.
Ce qui donne :
On peut ensuite construire le nouveau paquet avec les modifications apportées
Le paquet debian est alors généré, il se trouve à un niveau d'arborescence supérieur.
C'est parti :
On vérifie :
Il suffit alors de l'installer
Et hop c'est tout...
Montre que les modifications sont bien prises en compte
Afin d'éviter une mise à jour du paquet qui ferait perdre les modifications, geler le paquet :
Lister les paquets geler
Pour desinstaller le paquet
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)
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
Code : Tout sélectionner
sudo micro /etc/apt/sources.list.d/official-source-repositories.list
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
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
Code : Tout sélectionner
apt source easytag
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
Code : Tout sélectionner
cd easytag-2.4.3
Dans notre cas, le fichier à modifier est src/genres.h
Et apporter les modifications souhaitées
Code : Tout sélectionner
micro src/genres.h
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
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>"
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
Code : Tout sélectionner
debuild -b -uc -us
C'est parti :
Code : Tout sélectionner
cd ..
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
Code : Tout sélectionner
easytag
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
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)