first commit
This commit is contained in:
commit
d6e1fa6920
218
README.md
Normal file
218
README.md
Normal file
@ -0,0 +1,218 @@
|
|||||||
|
# 📦 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**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧱 1. Prérequis
|
||||||
|
|
||||||
|
Outils nécessaires :
|
||||||
|
```bash
|
||||||
|
sudo apt install build-essential dpkg-dev lintian
|
||||||
|
```
|
||||||
|
|
||||||
|
Optionnel mais recommandé :
|
||||||
|
```bash
|
||||||
|
sudo apt install fakeroot
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📁 2. 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
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📄 3. 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 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔗 4. 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.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧩 5. Arborescence complète recommandée
|
||||||
|
|
||||||
|
```text
|
||||||
|
mon-paquet-1.0/
|
||||||
|
├── DEBIAN
|
||||||
|
│ ├── control
|
||||||
|
│ ├── postinst
|
||||||
|
│ ├── prerm
|
||||||
|
│ └── postrm
|
||||||
|
├── 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}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚙️ 6. 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
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📦 7. Construire le paquet `.deb`
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dpkg-deb --build --root-owner-group mon-paquet-1.0
|
||||||
|
```
|
||||||
|
|
||||||
|
Résultat :
|
||||||
|
|
||||||
|
```text
|
||||||
|
mon-paquet-1.0.deb
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧪 8. 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
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 9. Bonnes pratiques
|
||||||
|
|
||||||
|
* ✔ Respecter le FHS (`/usr`, `/etc`, `/var`)
|
||||||
|
* ❌ Ne jamais utiliser `/usr/local`
|
||||||
|
* ✔ Utiliser `Architecture: all` pour scripts
|
||||||
|
* ✔ Versionner correctement
|
||||||
|
* ✔ Tester sur une VM propre
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
✉️ Maintenu par **Le Garage Numérique**
|
||||||
7
paquet/DEBIAN/control
Normal file
7
paquet/DEBIAN/control
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Package: geo
|
||||||
|
Version: 1.2
|
||||||
|
Section: base
|
||||||
|
Priority: optional
|
||||||
|
Architecture: all
|
||||||
|
Maintainer: Greg <contact@legaragenumerique.fr>
|
||||||
|
Description: Geographical Adventures installation pour Linux.
|
||||||
5
paquet/DEBIAN/postinst
Executable file
5
paquet/DEBIAN/postinst
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
chmod +x /opt/Geographical-Adventures/Geographical-Adventures.x86_64
|
||||||
|
echo "installation Terminée"
|
||||||
|
echo "Tu peux désormais jouer à Geographical Adventures"
|
||||||
5
paquet/DEBIAN/prerm
Executable file
5
paquet/DEBIAN/prerm
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
rm -rf '/opt/Geographical-Adventures/unity.lock'
|
||||||
|
rm -rf /usr/share/applications/geographical-adventures.desktop
|
||||||
|
echo "Application désinstallée avec succès"
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=Geographical Adventures
|
||||||
|
Comment=Une application pour apprendre la géographie
|
||||||
|
Exec=/opt/Geographical-Adventures/Geographical-Adventures.x86_64
|
||||||
|
Icon=/opt/Geographical-Adventures/Geographical-Adventures_Data/Resources/UnityPlayer.png
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Categories=Games;
|
||||||
Loading…
x
Reference in New Issue
Block a user