Création du package Debian Howto

Création du package Debian Howto

Préface

Être responsable d'une machine signifie prendre soin du matériel ainsi que des composants logiciels. Comme le montre la vie quotidienne en tant qu'administrateur système, il est préférable d'installer un logiciel en tant que logiciel plutôt que comme un tas de fichiers source. Cela réduit les coûts pour maintenir correctement le système.

Les forfaits disponibles auprès de votre distributeur préféré sont validés et supervisés par un main-d'œuvre de package. Il a testé le logiciel et assure qu'il s'adapte aux autres packages logiciels disponibles dans la distribution. De plus, le package est signé avec une clé GPG du mainteneur de package. Cela garantit l'intégrité du package et vous montre que le package provient d'une source de confiance.

Le format du package dépend de votre distribution Linux. Les formats sélectionnés sont les suivants:

deb

Packages utilisés dans: Debian GNU / Linux, Ubuntu, Armbian, Linux Mint, Knoppix

RPM

Packages utilisés dans: Redhat, Fedora, Centos, OpenSUSE

TGZ et TXZ

Packages utilisés dans: Slackware

le goudron.xz

Packages utilisés dans: Arch Linux

Ce document explique comment créer un package pour Debian GNU / Linux brièvement. Pour des informations détaillées sur le format de la package Debian et les outils pour maintenir un système Linux basé sur «Deb», vous pouvez jeter un œil sur le livre de gestion des packages Debian [DPMB] pour créer des packages pour Debian GNU / Linux, ces documents sont essentiels:

  • Le Guide de Debian New Haigener [DNMG]
  • La référence du développeur Debian [DDR]
  • Le tutoriel d'emballage Debian [DPT]
  • Le manuel de la politique Debian [DPM]

Le package avec lequel nous travaillerons est nommé «Helloworld» et a la version numéro 0.1. À des fins de démonstration, il contient simplement un seul script python qui publie le célèbre message «Bonjour le monde!»:

#!/ usr / bin / python
Print ("Bonjour, monde!")

Exigences

2.1. Clé GPG

Comme l'étape 1, demandez votre clé GPG disponible. Plus tard, la clé sera nécessaire pour signer le package. Gardez à l'esprit que les forfaits non signés ne sont pas dignes de confiance et ne peuvent pas faire partie de l'univers Debian.

Au cas où vous n'avez pas encore de clé GPG en créant un. Vous pouvez suivre les trois étapes ci-dessous. La première commande génère une nouvelle clé, la seconde exporte votre nouvelle clé dans un fichier séparé, et le troisième ajoute la clé à votre clés personnel.

$ gpg --ge-clé
$ gpg -a --output ~ /.gnupg / your_name.gpg --export «Votre nom»
$ gpg --import ~ /.gnupg / your_name.GPG

Pendant la création, assurez-vous que le nom donné _ votre nom_ est correct. Il est courant d'utiliser une combinaison de prénom et de nom de famille. Ce nom devra être exactement le même dans le package, alors, lors de la création du fichier «contrôle» du package Debian. Pour plus d'informations sur GPG, jetez un œil au manuel de confidentialité GNU [GPH].

2.2. La chaîne d'outils d'emballage

Pour créer un package Debian avec code source, les packages logiciels suivants sont requis sur votre système:

  • essentiel
  • autoconf
  • automake
  • autotools-dev
  • make dh
  • debhelper
  • devscripts
  • fakeroot
  • xutils
  • lintan
  • psoublard

En tant que «racine» de l'utilisateur, vous pouvez les installer en utilisant la commande suivante:

# APT-Get Installer Build-Essential AutoConf Automake Autotools-Dev Dh-Make Debhelper DevScripts Fakeroot Xutils Lintian Pbuilder

2.3. Préparer le logiciel à emballer

Nous devons préparer un répertoire pour construire le package. Créez un répertoire pour préparer l'environnement dans lequel nous allons construire le package:

$ mkdir -p ~./ build / helloworld / 0.1

Copiez le 'Tar.Archive compressée GZ dans le répertoire:

$ cp helloworld-0.1.le goudron.gz ~./ build / helloworld / 0.1

Changer dans le répertoire et extraire le package:

$ CD ~./ build / helloworld / 0.1
~ / build / helloworld / 0.1 $ TAR -XZF HELLOWORLD-0.1.le goudron.gz

Maintenant, le répertoire contient à la fois le code source dans un répertoire séparé et l'archive compressée:

~ / build / helloworld / 0.1 $ ls
Helloworld-0.1 Helloworld-0.1.le goudron.gz

Débitage

À ce stade, nous ajouterons les fichiers spécifiques à un package Debian. C'est pourquoi cette étape est nommée _debianisation_ du logiciel. Cela se fait en plusieurs étapes.

3.1 Préparez la structure de l'emballage

Se transformer en répertoire qui conserve l'intégralité du code source du package. Dans notre exemple, le package contient le fichier 'Helloworld.py ', seulement:

~ $ cd build / helloworld / 0.1 / Helloworld-0.1
~ / build / helloworld / 0.1 / Helloworld-0.1 $ ls
Bonjour le monde.py

Ajoutons les fichiers spécifiques à un package Debian. L'outil 'DH_make' entre en jeu. Le commutateur «-e« utilise l'adresse donnée comme adresse e-mail dans le champ «RETENIER» du fichier «Debian / Control». Construire le package Utilisez votre propre adresse e-mail, plutôt. Gardez à l'esprit d'utiliser la même adresse e-mail qui correspond à votre clé GPG.

Le commutateur '-f' utilise le fichier donné comme archive source d'origine et saute la copie de l'arborescence du programme actuelle à 'Programme.origine.

~ / build / helloworld / 0.1 / Helloworld-0.1 $ dh_make -e Frank.hofmann @ efho.de -f… / helloworld-0.1.le goudron.gz

À l'invite, il vous est demandé de sélectionner le type de package qui doit être créé. Pour choisir _Single binary_ type 's'.

Type de package: binaire unique, binaire indépendant, binaire multiple, bibliothèque, module de noyau, patch de noyau?
[s / i / m / l / k / n] s
Nom du responsable: Frank Hofmann
Email-Address: Frank.hofmann @ efho.de
Date: Sat, 04 novembre 2017 21:16:13 +0100
Nom du package: Helloworld
Version: 0.1
Licence: vide
Type de package: célibataire
Frapper pour confirmer:
Actuellement, il n'y a pas de makefile de haut niveau. Cela peut nécessiter un réglage supplémentaire.
Fait. Veuillez modifier les fichiers dans le subdirectory debian /. Tu devrais aussi
Vérifiez que les makefiles Helloworld installent dans $ destdir et non dans / .

Il en résulte un répertoire appelé «Debian»:

~ / build / helloworld / 0.1 / Helloworld-0.1 $ ls
Debian Helloworld.py

Ce répertoire contient tous les fichiers spécifiques au package.

3.2. Ajuster le fichier de commande

Le fichier 'Debian / Control' conserve les dépendances nécessaires _po à construire le package. En utilisant la commande 'dpkg-depcheck -d ./ Configurer «Vous recevez une liste avec tous les packages requis. Dans notre cas, il n'y a aucun autre package nécessaire car Python est une langue interprétée.

Ensuite, nous devons modifier le fichier «Debian / Control» et ajouter des valeurs spécifiques au package. Pour notre exemple, il semble que suit:

Source: Helloworld
Section: Python
Priorité: facultative
RETENU: Frank Hofmann
Build-Depends: Debhelper (> = 9)
Version des normes: 3.9.5
Page d'accueil: http: // www.efho.de /
# VCS-GIT: git: // anonscm.Debian.org / collaboration / helloworld.git
# VCS-Browser: http: // anonscm.Debian.org /?p = collaboration / helloworld.git; a = résumé
Package: Helloworld
Architecture: tout
Dépend: $ shlibs: dépend, $ misc: dépend, python
Description: imprime Hello World in Python
Imprime Hello World in Python

3.3. Ajuster le fichier de copyright

Le fichier «Debian / Copyright» contient les informations de licence pour le package logiciel. Il est préparé pour la libération via la licence publique GNU 2 (GPLV2). Pour notre exemple, il semble que suit:

Format: http: // www.Debian.org / doc / packaging-manuels / copyright-format / 1.0 /
Name en amont: Helloworld
Source: http: // www.efho.de /
Fichiers: Debian / *
Copyright: 2017 Frank Hofmann
Licence: GPL-2+
Ce package est un logiciel gratuit; vous pouvez le redistribuer et / ou modifier
Il en vertu des termes de la licence publique générale GNU telle que publiée par
la Free Software Foundation; soit la version 2 de la licence, soit
(à votre option) Toute version ultérieure.
.
Ce package est distribué dans l'espoir qu'il sera utile,
mais sans aucune garantie; sans même la garantie implicite de
Qualité marchande ou aptitude à un usage particulier. Voir le
Licence publique générale GNU pour plus de détails.
.
Vous devriez avoir reçu une copie de la licence publique générale GNU
avec ce programme. Sinon, voir
.
Sur Debian Systems, le texte complet du GNU General
La version 2 de la licence publique peut être trouvée dans "/ usr / share / licences communes / gpl-2".

3.4. Ajustez le fichier ChangeLog

Après les informations sur le droit d'auteur, le fichier «Debian / Changelog» doit être ajusté. Dans notre exemple, nous ajoutons les informations «version initiale».

Helloworld (0.1-1) instable; urgence = bas
* Première version
-- Frank Hofmann Sat, 04 novembre 2017 21:16:13 +0100

C'est tout ce dont nous avons besoin jusqu'à présent - maintenant nous pouvons construire le package, enfin.


Construisez le package

Pour construire le package, nous devons remonter un répertoire et exécuter la commande suivante:

~ / build / helloworld / 0.1 / Helloworld-0.1 $ dpkg-buildpackage -rfakeroot

L'option «-rfakeroot» permet «dpkg-buildpackage» d'exécuter les commandes en tant qu'utilisateur privilégié à l'aide de la commande «Fakeroot». Ceci est nécessaire pour préparer le package et créer des fichiers et des répertoires.
La commande ci-dessus se traduit par une liste plus longue des messages de sortie (illustré ici dans un environnement de langue allemande):

dpkg-buildpackage: quellpaket helloworld
dpkg-buildpackage: quellpaket helloworld
DPKG-BuildPackage: Quellversion 0.1-1
DPKG-BUILDPACKAGE: QuellDistribute instable
DPKG-BUILDPACKAGE: QUELLEN GEändert Durch Frank Hofmann
dpkg-buildPackage: hôte-architektur AMD64
dpkg-source - be-build helloworld-0.1
Fakeroot Debian / Rules Clean
DH Clean
dh_testdir
dh_auto_clean
dh_clean
dpkg-source -b helloworld-0.1
DPKG-source: Informations: QuellFormat "3.0 (courtepointe) "Wird Verwendet
DPKG-source: Information: Helloworld Wird Unter Benutzung des Existierenden ./ Helloworld_0.1.origine.le goudron.GZ Gebaut
dpkg-source: information: helloworld wird in helloworld_0.1-1.Debian.le goudron.XZ Gebaut
dpkg-source: information: helloworld wird in helloworld_0.1-1.DSC Gebaut
Debian / Rules Build
dh build
dh_testdir
dh_auto_configure
dh_auto_build
dh_auto_test
Fakeroot Debian / Règles binaire
dh binaire
dh_testroot
dh_prep
dh_auto_install
dh_instaldocs
dh_installchangelogs
dh_perl
dh_link
dh_compress
dh_fixperms
dh_strip
dh_makeshlibs
dh_shlibdeps
dh_installdeb
DH_GENCONTROL
DPKG-GenControl: Warnung: Feld dépend de von paket helloworld: substitutions inseaskannte Variable $ shlibs: dépend
dh_md5sums
dh_builddeb
DPKG-DEB: PAKET "Helloworld" Wird In "… / Helloworld_0.1-1_AMD64.Deb "Gebaut.
DPKG-Genchanges <… /helloworld_0.1-1_amd64.changes
DPKG-Genchanges: Kompletter Quellcode Beim Hochladen Hinzufügen
dpkg-source - after-build helloworld-0.1
DPKG-BuildPackage: ALLES HOCHZULADEN (OriginalQuellen Enthalten)
SignFile Helloworld_0.1-1.dsc
Sie Benötigen Eine Phrase, Um Den Gehemen Schlüssel Zu Entsperren.
Benutzer: "Frank Hofmann (Hofmann EDV)
"
4096 bits RSA Schlüssel, ID D431AC07, Erzugt 2014-09-05

4.1. Valider le package

Félicitations - vous avez réussi à construire un package Debian - ouais! Maintenant, regardons de plus près le package. Ici, «Lintan» entre en jeu. Cet outil valide votre colis afin de trouver des violations contre les règles strictes que les forfaits de Debian doivent respecter.

Pour exécuter les tests Type dans la commande suivante:

Linto Helloworld_0.1-1_AMD64.deb

L'outil ne trouve pas de violations de règles mais aussi des erreurs d'orthographe, et de mauvais caractères. L'interrupteur `` `` pédantique '' demande «lint» à être beaucoup plus critique que d'habitude. Comme vous pouvez le voir ci-dessous, «Linto» est un peu grincheux et a découvert trois avertissements, et une erreur.

À l'exception du premier avertissement, nous pouvons facilement rendre «Lintan» heureux et ajuster le contenu du package en fonction de l'ensemble de règles. L'avertissement «new-package-should-close-itp-bug» signifie qu'il n'y a pas de rapport de bogue contre le package ITP (ITP signifie _intended to package_). Pour un package Debian régulier, un rapport de bogue doit être envoyé au bugtracker pour le package ITP pour informer les autres que vous avez l'intention de commencer à emballer ce logiciel.

4.2. AVERTISSEMENT: «ReadMe-debian-Contains-Debmake-Template

Le fichier 'Readme.Debian 'vise à conserver des billets supplémentaires concernant ce package. 'dh_make' a créé ce fichier pour nous:

Helloworld pour Debian
---------------------

-- Frank Hofmann Sat, 04 novembre 2017 21:16:13 +0100

Dans notre exemple, nous n'avons pas d'informations supplémentaires, nous pouvons donc supprimer le fichier.

4.3. AVERTISSEMENT: «Description-Start-With-Leading-Espaces»

Cet avertissement est soulevé car la description plus longue de notre package dans le fichier «Debian / Control» commence par plus d'un seul espace. Dès que nous supprimons un seul espace, l'avertissement disparaîtra.

4.4. Erreur: «Description-Synopsis-est-dupliqué»

Chaque package nécessite à la fois une description courte et plus longue dans «Debian / Control». Cette erreur est augmentée car les deux descriptions sont identiques. Dès que nous avons prolongé la description plus longue, l'erreur a disparu.


Liens et références

- [DDR] Andreas Barth, Adam Di Carlo, Raphaël Hertzog, Lucas Nussbaum, Christian Schwarz, Ian Jackson: La référence du développeur Debian
- [DNMG] Josip Rodin, Osamu Aoki: Le guide de Debian New Haigeer's
- [DPMB] Axel Beckert, Frank Hofmann: The Debian Package Management Book
- [DPM] Le manuel de la politique Debian
- [DPT] Le tutoriel de Debian Packaging
- [GPH] Le manuel de confidentialité GNU
- [Lushpaipackage] Alex Lushpai: Comment créer un package Debian à partir de Source


Remerciements

L'auteur tient à remercier Axel Beckert et Gerold Rupprecht pour leur soutien et leurs critiques lors de la préparation de cet article.