Uploader votre premier paquet¶
Ce que vous allez apprendre :
- Comment construire un paquet
.debminimal à partir de zéro - Comment l'uploader sur Repod et observer le pipeline s'exécuter
- Comment l'installer sur une machine cliente avec
apt install
Durée : ~15 minutes
Prérequis : Repod démarré en local (voir Démarrage rapide), curl, jq, dpkg-deb
Étape 1 — Construire un paquet .deb minimal¶
Créons un paquet simple qui installe un script shell.
# Créer l'arborescence du paquet
mkdir -p ~/hello-repod/DEBIAN
mkdir -p ~/hello-repod/usr/local/bin
# Le script que notre paquet va installer
cat > ~/hello-repod/usr/local/bin/hello-repod << 'EOF'
#!/bin/bash
echo "Hello from Repod! Package management that actually works."
EOF
chmod +x ~/hello-repod/usr/local/bin/hello-repod
# Le fichier control — métadonnées du paquet
cat > ~/hello-repod/DEBIAN/control << 'EOF'
Package: hello-repod
Version: 1.0.0
Architecture: all
Maintainer: Your Name <you@example.com>
Description: A demo package for Repod
This package was created to demonstrate the Repod upload pipeline.
EOF
# Construire le .deb
dpkg-deb --build ~/hello-repod ~/hello-repod_1.0.0_all.deb
Vous devriez voir :
Étape 2 — Obtenir un token d'authentification¶
Allez sur http://localhost:3003 et connectez-vous. L'interface web gère l'authentification automatiquement — continuez à l'étape 3 dans le navigateur.
Étape 3 — Uploader le paquet¶
curl -X POST http://localhost:8000/api/v1/upload/ \
-H "Authorization: Bearer $TOKEN" \
-F "file=@$HOME/hello-repod_1.0.0_all.deb" \
-F "distribution=jammy"
Réponse :
- Cliquer sur Upload dans la barre latérale gauche
- Glisser
hello-repod_1.0.0_all.debdans la zone d'upload - Sélectionner jammy dans le menu déroulant de distribution
- Cliquer Upload et observer les étapes du pipeline apparaître en temps réel
Le pipeline exécute 6 vérifications automatiquement. Un paquet propre comme celui-ci passe tout en quelques secondes.
Et si une CVE est détectée ?
Si l'étape d'analyse CVE détecte une vulnérabilité (selon votre politique), le paquet passe au statut pending_review. Il ne sera pas publié tant qu'un utilisateur avec le rôle maintainer ou admin ne l'a pas revu et approuvé. Voir le Workflow de revue CVE.
Étape 4 — Vérifier qu'il est dans le dépôt¶
# Vérifier via l'API
curl -s -H "Authorization: Bearer $TOKEN" \
"http://localhost:8000/api/v1/packages/?q=hello-repod" | jq .
# Vérifier directement l'index APT
curl -s "http://localhost/repos/dists/jammy/main/binary-all/Packages" \
| grep -A5 "Package: hello-repod"
Étape 5 — Installer depuis une machine cliente¶
Sur n'importe quelle machine qui doit utiliser votre dépôt (peut être la même machine pour ce tutoriel) :
# 1. Faire confiance à la clé GPG du dépôt
curl -sL http://localhost/repos/dists/jammy/Release.gpg \
| gpg --dearmor \
| sudo tee /etc/apt/trusted.gpg.d/repod.gpg > /dev/null
# 2. Ajouter la source du dépôt
echo "deb http://localhost/repos jammy main" \
| sudo tee /etc/apt/sources.list.d/repod.list
# 3. Mettre à jour et installer
sudo apt update
sudo apt install hello-repod
# 4. L'exécuter !
hello-repod
Sortie attendue :
Résolution de problèmes¶
L'upload échoue avec 'invalid distribution'
Le nom de distribution doit correspondre à une distribution configurée dans votre dépôt. Noms courants : focal, jammy, noble, bookworm, bullseye. Vérifiez Paramètres → Sources APT dans l'interface web pour voir les distributions disponibles.
Le pipeline indique 'CVE found — pending review'
Votre politique CVE est réglée sur review pour la sévérité détectée. Allez dans Sécurité → File de revue dans l'interface web. Vous y verrez les détails de la CVE et pourrez approuver ou rejeter le paquet.
apt update échoue avec 'NO_PUBKEY'
La clé GPG n'a pas été importée correctement. Ré-exécutez la première commande de l'étape 5. Assurez-vous que l'URL est accessible depuis la machine cliente (remplacez localhost par l'IP de votre serveur si vous êtes sur une machine différente).
Étapes suivantes¶
- Mettre en place la publication CI/CD → — automatiser ceci avec GitHub Actions ou GitLab CI
- Référence API → — toutes les options d'upload documentées
- Pipeline de sécurité expliqué → — comprendre chaque étape du pipeline