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