<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://uname.pingveno.net/blog/index.php/feed/rss2/xslt" ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title># uname -a - Mot-clé - package</title>
    <link>https://uname.pingveno.net/blog/index.php/</link>
    <atom:link href="https://uname.pingveno.net/blog/index.php/feed/tag/package/rss2" rel="self" type="application/rss+xml" />
    <description>Le blog de uname.pingveno.net</description>
    <language>fr</language>
    <pubDate>Sun, 17 May 2026 16:16:57 +0200</pubDate>
    <copyright>Mathieu Pellegrin</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Dotclear</generator>
          <item>
        <title>Maman, j'ai patché Debian</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2020/03/19/Maman-j-ai-patch%C3%A9-Debian</link>
        <guid isPermaLink="false">urn:md5:71a75a5565e36a22a1a7aac2045ae2d7</guid>
        <pubDate>Thu, 19 Mar 2020 15:33:00 +0100</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Hacks</category>
                          <category>compile</category>
                  <category>debian</category>
                  <category>debuild</category>
                  <category>package</category>
                  <category>patch</category>
                <description>          &lt;p&gt;Un billet en forme de note à moi-même sur ce qu'il faut faire pour correctement :&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Récupérer un package depuis upstream&lt;/li&gt;
	&lt;li&gt;Appliquer un ou plusieurs patches&lt;/li&gt;
	&lt;li&gt;Le signer et le re-déployer en production&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Préparer l'environnement&lt;/h3&gt;

&lt;p&gt;Pour compiler et signer un paquet simplement il vous faut :&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Un utilisateur (non root)&lt;/li&gt;
	&lt;li&gt;Une clé GPG&lt;/li&gt;
	&lt;li&gt;Les build-essentials et les devscripts (parce qu'on est feignasse)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Créez un utilisateur non-root et loguez-vous avec. N'utilisez pas &quot;su&quot; à partir de root, parce que sinon GPG ne pourra pas vous demander la phrase de passe (des histoires de droits sur les TTY).&lt;/p&gt;

&lt;p&gt;Créez une clé GPG, et paramétrez-la :&lt;/p&gt;

&lt;pre&gt;
gpg --full-generate-key&lt;/pre&gt;

&lt;p&gt;Récupérez l'identifiant de clé à la fin de la procédure, ou avec &lt;strong&gt;gpg&amp;nbsp;--list-keys&lt;/strong&gt; si vous l'avez loupé.&lt;/p&gt;

&lt;p&gt;Modifiez ou créez le fichier &lt;strong&gt;~/.devscripts&lt;/strong&gt; et ajoutez :&lt;/p&gt;

&lt;pre&gt;
DEBUILD_SET_ENVVAR_DEBSIGN_KEYID=xxxxxxxx
&lt;/pre&gt;

&lt;p&gt;Avec le xxxxxx qui correspond à votre identifiant de clé.&lt;/p&gt;

&lt;h3&gt;Récupérer le paquet et les dépendances de compilation&lt;/h3&gt;

&lt;p&gt;Le plus simple c'est quand le paquet existe déjà et qu'il faut simplement patcher. S'il n'existe aucun paquet, il faut créer un nouveau paquet, éventuellement debianizer la configuration, et c'est une autre paire de manches (et c'est pas le sujet ici).&lt;/p&gt;

&lt;p&gt;Pour récupérer le paquet upstream :&lt;/p&gt;

&lt;pre&gt;
apt-get source nomdupaquet&lt;/pre&gt;

&lt;p&gt;Si le paquet est introuvable, ajoutez les dépôts src à votre sources.list :&lt;/p&gt;

&lt;pre&gt;
&lt;strong&gt;deb-src&lt;/strong&gt; http://deb.debian.org/debian/ buster main contrib
&lt;strong&gt;deb-src&lt;/strong&gt; http://security.debian.org/debian-security buster/updates main contrib
&lt;strong&gt;deb-src&lt;/strong&gt; http://deb.debian.org/debian/ buster-updates main contrib&lt;/pre&gt;

&lt;p&gt;Il faut ensuite récupérer les paquets nécessaires à la compilation. Coup de bol, si vous avez pu avoir le paquet source à l'étape précédente, c'est facile :&lt;/p&gt;

&lt;pre&gt;
apt-get build-dep nomdupaquet&lt;/pre&gt;

&lt;h3&gt;Patcher le paquet&lt;/h3&gt;

&lt;p&gt;Le format dpatch est obsolète, en principe votre package utilise quilt comme tout paquet récent. Il suffit de télécharger le patch depuis git et le placer dans le dossier &lt;strong&gt;debian/patches&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Ensuite, ajoutez le nom du fichier que vous avez ajouté au fichier &lt;strong&gt;debian/patches/series&lt;/strong&gt; . Attention, l'ordre dans series est important.&lt;/p&gt;

&lt;h3&gt;Déclarer les changements&lt;/h3&gt;

&lt;p&gt;Ce n'est pas nécessaire la première fois, mais si vous re-compilez un paquet, il faut ajouter un commentaire dans le Changelog. Le plus simple : utilisez la commande &lt;strong&gt;dch -i&amp;nbsp; &lt;/strong&gt;et modifiez la ligne de changelog, en changeant bien la version du paquet pour qu'elle soit consécutive à la précédente.&lt;/p&gt;

&lt;h3&gt;Compiler le paquet&lt;/h3&gt;

&lt;p&gt;Rendez-vous dans le dossier du paquet, et lancez la commande &lt;strong&gt;debuild&lt;/strong&gt; . C'est tout. Rentrez votre phrase de passe pour la clé à la fin de la procédure.&lt;/p&gt;

&lt;h3&gt;Déployer en production&lt;/h3&gt;

&lt;p&gt;Pour déployer un paquet, deux solutions :&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Envoyer le paquet puis l'installer avec &lt;strong&gt;dpkg -i lefichier.deb&lt;/strong&gt; ou un outil d'orchestration&lt;/li&gt;
	&lt;li&gt;Installer un DPA (Debian Private Repository) et l'ajouter au sources.list&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;L'installation du serveur DPA fera l'objet d'un autre billet (un jour).&lt;/p&gt;

&lt;h3&gt;Sources&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://help.github.com/en/github/authenticating-to-github/generating-a-new-gpg-key&quot;&gt;Create GPG KEY&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://wiki.debian.org/debian/patches&quot;&gt;Patch a Debian package&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://www.debian.org/doc/manuals/maint-guide/build.en.html&quot;&gt;Build a Debian package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
        
              </item>
      </channel>
</rss>
