paquet-debian/README.md
2026-02-11 15:10:19 +01:00

237 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📦 Créer un paquet Debian (.deb)
Ce document explique **pas à pas** comment créer un paquet Debian propre, avec :
* larborescence correcte
* les dépendances
* les scripts dinstallation
* la construction du fichier `.deb`
Ce guide sadresse aux systèmes **Debian / Ubuntu et dérivés**.
---
<!-- TOC -->
- [📦 Créer un paquet Debian .deb](#-cr%C3%A9er-un-paquet-debian-deb)
- [Prérequis](#pr%C3%A9requis)
- [Arborescence minimale dun paquet Debian](#arborescence-minimale-dun-paquet-debian)
- [Création des dossiers](#cr%C3%A9ation-des-dossiers)
- [Le fichier DEBIAN/control](#le-fichier-debiancontrol)
- [Exemple complet](#exemple-complet)
- [Champs importants](#champs-importants)
- [Gérer les dépendances](#g%C3%A9rer-les-d%C3%A9pendances)
- [Syntaxe](#syntaxe)
- [Exemples](#exemples)
- [Arborescence complète recommandée](#arborescence-compl%C3%A8te-recommand%C3%A9e)
- [Création rapide](#cr%C3%A9ation-rapide)
- [Scripts Debian postinst, prerm, postrm](#scripts-debian-postinst-prerm-postrm)
- [postinst après installation](#postinst-apr%C3%A8s-installation)
- [prerm avant suppression](#prerm-avant-suppression)
- [Permissions obligatoires](#permissions-obligatoires)
- [Construire le paquet .deb](#construire-le-paquet-deb)
- [Tester le paquet](#tester-le-paquet)
- [Installation](#installation)
- [Vérification](#v%C3%A9rification)
- [Analyse qualité](#analyse-qualit%C3%A9)
<!-- /TOC -->
---
## Prérequis
Outils nécessaires :
```bash
sudo apt install build-essential dpkg-dev lintian
```
Optionnel mais recommandé :
```bash
sudo apt install fakeroot
```
---
## Arborescence minimale dun paquet Debian
Un paquet Debian est **une simple arborescence de fichiers**.
Exemple pour un paquet `mon-paquet` version `1.0` :
```text
mon-paquet-1.0/
├── DEBIAN
│ └── control
└── usr
└── bin
└── mon-paquet
```
### Création des dossiers
```bash
mkdir -p mon-paquet-1.0/DEBIAN
mkdir -p mon-paquet-1.0/usr/bin
```
---
## Le fichier DEBIAN/control
Le fichier `control` est **obligatoire**.
```bash
nano mon-paquet-1.0/DEBIAN/control
```
### Exemple complet
```text
Package: mon-paquet
Version: 1.0
Section: utils
Priority: optional
Architecture: amd64
Maintainer: Le Garage Numérique <contact@legaragenumerique.fr>
Depends: bash (>= 5.0), curl
Description: Exemple de paquet Debian
Description longue sur plusieurs lignes.
Chaque ligne doit commencer par un espace.
```
### Champs importants
| Champ | Description |
| ------------ | ---------------------------- |
| Package | Nom du paquet |
| Version | Version du paquet |
| Architecture | `amd64`, `all`, `arm64`, etc |
| Depends | Dépendances APT |
| Description | Description courte + longue |
---
## Gérer les dépendances
Les dépendances sont listées dans `Depends:`.
### Syntaxe
```text
Depends: paquet1, paquet2 (>= 1.2), paquet3 | alternative
```
### Exemples
```text
Depends: python3, python3-requests
Depends: systemd | sysvinit
```
APT installera automatiquement les dépendances lors de linstallation.
---
## Arborescence complète recommandée
```text
mon-paquet-1.0/
├── DEBIAN
│ ├── control -> Infos sur le paquet
│ ├── postinst -> script éxécuté après la mise en place des fichiers (installation)
│ ├── prerm -> script éxécuté avant la désinstallation
│ └── postrm -> script éxécuté après la désinstallation
├── usr
│ ├── bin
│ │ └── mon-paquet
│ └── share
│ ├── doc
│ │ └── mon-paquet
│ │ └── README.md
│ └── applications
│ └── mon-paquet.desktop
└── etc
└── mon-paquet
└── config.conf
```
### Création rapide
```bash
mkdir -p mon-paquet-1.0/{DEBIAN,usr/bin,etc/mon-paquet}
mkdir -p mon-paquet-1.0/usr/share/{doc/mon-paquet,applications}
```
---
## Scripts Debian (postinst, prerm, postrm)
Ces scripts sont exécutés automatiquement.
### postinst (après installation)
```bash
#!/bin/sh
set -e
echo "Installation terminée"
```
### prerm (avant suppression)
```bash
#!/bin/sh
set -e
echo "Suppression du paquet"
```
### Permissions obligatoires
```bash
chmod 755 mon-paquet-1.0/DEBIAN/postinst
chmod 755 mon-paquet-1.0/DEBIAN/prerm
chmod 755 mon-paquet-1.0/DEBIAN/postrm
```
---
## Construire le paquet .deb`
```bash
dpkg-deb --build --root-owner-group mon-paquet-1.0
```
Résultat :
```text
mon-paquet-1.0.deb
```
---
## Tester le paquet
### Installation
```bash
sudo apt install ./mon-paquet-1.0.deb
```
### Vérification
```bash
dpkg -l mon-paquet
```
### Analyse qualité
```bash
lintian mon-paquet-1.0.deb
```
---
✉️ Maintenu par [**Le Garage Numérique**](mailto:support@lgn.dev)