add apt gestion

Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
GnomeZworc 2026-04-25 19:03:26 +02:00
commit c4776d81dd
Signed by: nicolas.boufideline
GPG key ID: 4406BBBF8845D632
22 changed files with 1465 additions and 163 deletions

View file

@ -5,17 +5,18 @@ ClonePack est un système de clonage et de gel d'artefacts. Il permet de synchro
## Types d'artefacts supportés
- Enterprise Linux (RPM/YUM/DNF)
- Debian (APT) — *à venir*
- Debian/Ubuntu (APT)
- Docker images — *à venir*
- Binaires — *à venir*
## Fonctionnalités
- Clonage de dépôts externes avec vérification SHA256
- Clonage de dépôts RPM et APT avec vérification SHA256
- Scan régulier des sources pour détecter les nouveaux paquets
- Validation manuelle ou automatique des mises à jour
- Snapshots métadonnées avec diff et rollback
- Proxy miroir HTTP (consommable directement par `yum`/`apt`)
- Blocklist permanente par paquet (toutes versions)
- Snapshots avec diff et rollback (RPM)
- Proxy miroir HTTP accessible par ID ou par nom de dépôt
---
@ -85,11 +86,21 @@ Toutes les commandes CLI appellent l'API REST. L'URL du serveur se configure ave
--type rpm \
--source-url https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os
# Créer un dépôt APT
./bin/clonepack repo create \
--name debian-bookworm \
--type apt \
--source-url https://deb.debian.org/debian \
--suite bookworm \
--components main,contrib \
--arch amd64
# Créer avec validation manuelle
./bin/clonepack repo create \
--name rocky9-baseos \
--type rpm \
--source-url https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os \
--name debian-bookworm \
--type apt \
--source-url https://deb.debian.org/debian \
--suite bookworm \
--sync-mode manual
# Lister les dépôts
@ -98,10 +109,19 @@ Toutes les commandes CLI appellent l'API REST. L'URL du serveur se configure ave
# Détail d'un dépôt
./bin/clonepack repo get 1
# Modifier un dépôt (source URL, sync mode, config APT)
./bin/clonepack repo update 1 --source-url https://archive.debian.org/debian
./bin/clonepack repo update 1 --suite bookworm-backports
./bin/clonepack repo update 1 --components main,contrib,non-free
./bin/clonepack repo update 1 --sync-mode manual
# Supprimer un dépôt
./bin/clonepack repo delete 1
```
Les flags `--suite`, `--components` et `--arch` ne s'appliquent qu'aux dépôts de type `apt`.
Seuls les flags fournis sont modifiés — les autres champs restent inchangés.
### Clonage
```bash
@ -171,34 +191,35 @@ Les paquets bloqués n'apparaissent plus jamais dans la liste pending, quelle qu
./bin/clonepack repo snapshot delete 1 3
```
Un snapshot automatique est créé après chaque `sync-approve`.
Un snapshot automatique est créé après chaque `sync-approve` sur un dépôt RPM.
---
## Proxy miroir
ClonePack expose chaque dépôt cloné comme un miroir HTTP à l'adresse :
ClonePack expose chaque dépôt cloné comme un miroir HTTP. L'accès est possible par **ID numérique** ou par **nom du dépôt** :
```
http://<host>:<port>/mirror/<repo_id>/
http://<host>:<port>/mirror/<nom_du_depot>/
```
Le proxy sert uniquement ce qui a été cloné localement (mode local-only). Si un fichier est absent, le serveur retourne 404.
**Configuration YUM/DNF** (`/etc/yum.repos.d/clonepack.repo`) :
```ini
[rocky9-baseos]
name=Rocky Linux 9 BaseOS via ClonePack
baseurl=http://clonepack:8080/mirror/1
baseurl=http://clonepack:8080/mirror/rocky9-baseos
enabled=1
gpgcheck=0
```
**Configuration APT** (`/etc/apt/sources.list.d/clonepack.list`) :
```
deb [trusted=yes] http://clonepack:8080/mirror/2 bookworm main
deb [trusted=yes] http://clonepack:8080/mirror/debian-bookworm bookworm main contrib
```
Le proxy sert uniquement ce qui a été cloné localement (mode local-only). Si un fichier est absent, le serveur retourne 404.
---
## API REST
@ -209,6 +230,7 @@ Le proxy sert uniquement ce qui a été cloné localement (mode local-only). Si
| `POST` | `/api/v1/repos` | Créer un dépôt |
| `GET` | `/api/v1/repos` | Lister les dépôts |
| `GET` | `/api/v1/repos/{id}` | Détail d'un dépôt |
| `PATCH` | `/api/v1/repos/{id}` | Modifier un dépôt |
| `DELETE` | `/api/v1/repos/{id}` | Supprimer un dépôt |
| `POST` | `/api/v1/repos/{id}/clone` | Démarrer le clonage |
| `GET` | `/api/v1/repos/{id}/clone/status` | Statut du clonage |
@ -225,4 +247,26 @@ Le proxy sert uniquement ce qui a été cloné localement (mode local-only). Si
| `DELETE` | `/api/v1/repos/{id}/snapshots/{snap_id}` | Supprimer un snapshot |
| `GET` | `/api/v1/repos/{id}/snapshots/diff?from=X&to=Y` | Diff deux snapshots |
| `POST` | `/api/v1/repos/{id}/snapshots/{snap_id}/rollback` | Rollback |
| `GET` | `/mirror/{id}/*` | Proxy miroir HTTP |
| `GET` | `/mirror/{id_ou_nom}/*` | Proxy miroir HTTP |
**Exemple de création d'un dépôt APT via REST :**
```bash
curl -X POST http://localhost:8080/api/v1/repos \
-H "Content-Type: application/json" \
-d '{
"name": "debian-bookworm",
"type": "apt",
"source_url": "https://deb.debian.org/debian",
"apt_suite": "bookworm",
"apt_components": ["main", "contrib"],
"apt_architectures": ["amd64"],
"sync_mode": "manual"
}'
```
**Exemple de modification via REST :**
```bash
curl -X PATCH http://localhost:8080/api/v1/repos/1 \
-H "Content-Type: application/json" \
-d '{"source_url": "https://archive.debian.org/debian", "apt_suite": "buster"}'
```