add apt gestion
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
parent
274ea454dd
commit
c4776d81dd
22 changed files with 1465 additions and 163 deletions
72
README.md
72
README.md
|
|
@ -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"}'
|
||||
```
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue