237 lines
4.9 KiB
Markdown
237 lines
4.9 KiB
Markdown
# 📦 Créer un paquet Debian (.deb)
|
||
|
||
Ce document explique **pas à pas** comment créer un paquet Debian propre, avec :
|
||
|
||
* l’arborescence correcte
|
||
* les dépendances
|
||
* les scripts d’installation
|
||
* la construction du fichier `.deb`
|
||
|
||
Ce guide s’adresse aux systèmes **Debian / Ubuntu et dérivés**.
|
||
|
||
<!-- TOC -->
|
||
## TABLE DES MATIERES:
|
||
|
||
- [Prérequis](#pr%C3%A9requis)
|
||
- [Arborescence minimale d’un 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 d’un 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 l’installation.
|
||
|
||
---
|
||
|
||
## 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)
|