Guide de dépannage pour Mmdebstrap : résoudre les problèmes courants
mmdebstrap est un outil pour créer des images de systèmes basés sur Debian (systèmes de fichiers racine) de manière minimale et efficace. Il est conçu pour être simple, rapide et léger, ce qui le rend idéal pour créer de petites images système personnalisées pour des conteneurs, des machines virtuelles ou des systèmes embarqués. Si vous utilisez fréquemment mmdebstrap pour créer des systèmes minimalistes basés sur Debian, ce guide vous aidera à dépanner et résoudre les problèmes les plus courants que vous pourriez rencontrer.
1. Impossible de créer /dev/null : Permission refusée
Problème :
Lorsque vous exécutez des commandes comme apt update dans le chroot, vous voyez des erreurs telles que :
Hit:1 http://deb.debian.org/debian bookworm InRelease
Hit:2 http://deb.debian.org/debian bookworm-updates InRelease
0% [Connecting to security.debian.org (2a04:4e42:400::644)]/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied
/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied
/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied
E: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
Err:1 http://deb.debian.org/debian bookworm InRelease
gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
0% [Waiting for headers]/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied
/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied
/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied
E: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
Err:2 http://deb.debian.org/debian bookworm-updates InRelease
gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
Hit:3 http://security.debian.org/debian-security bookworm-security InRelease
0% [Working]/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied
/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied
/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied
E: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
Err:3 http://security.debian.org/debian-security bookworm-security InRelease
gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://deb.debian.org/debian bookworm InRelease: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://deb.debian.org/debian bookworm-updates InRelease: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://security.debian.org/debian-security bookworm-security InRelease: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
W: Failed to fetch http://deb.debian.org/debian/dists/bookworm/InRelease gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
W: Failed to fetch http://deb.debian.org/debian/dists/bookworm-updates/InRelease gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
W: Failed to fetch http://security.debian.org/debian-security/dists/bookworm-security/InRelease gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
W: Some index files failed to download. They have been ignored, or old ones used instead.Solution :
L'environnement chroot n'a pas accès au répertoire /dev de l'hôte.
Pour corriger l'erreur Permission Denied pour /dev/null, quittez l'environnement chroot et montez le répertoire /dev à l'intérieur du chroot :
sudo mount --bind /dev /path/to/chroot/devRemplacez /path/to/chroot par le répertoire où se trouve votre chroot.
Exemple:
sudo mount --bind /dev ~/debian-chroot/dev/Pourquoi cela fonctionne :
Le répertoire /dev contient des fichiers de périphériques comme /dev/null, qui sont essentiels pour de nombreux programmes. Monter le répertoire /dev de l'hôte donne au chroot l'accès à ces fichiers.
2. Outils GPG manquants (gpgv introuvable)
Problème :
Lors de l'exécution de apt update, vous voyez des erreurs comme :
gpgv, gpgv2 or gpgv1 required for verification, but neither seems installedSolution :
Installez gpgv à l'intérieur du chroot :
sudo chroot /path/to/chroot apt update
sudo chroot /path/to/chroot apt install -y gpgvPourquoi cela fonctionne :
apt utilise gpgv pour vérifier les signatures des paquets. L'installer garantit que apt peut mettre à jour et installer les paquets en toute sécurité.
3. Erreurs de vérification du dépôt
Problème :
Lors de l'exécution de apt update, vous voyez des erreurs comme :
The repository is not signed. Updating from such a repository can't be done securely.Solution :
Cette erreur se produit parce que gpgv est manquant ou que les clés du dépôt ne sont pas fiables. Suivez ces étapes :
- Installez
gpgv(voir la solution 2 ci-dessus). - Mettre à jour les listes de paquets :
sudo chroot /path/to/chroot apt updatePourquoi cela fonctionne :
gpgv est requis pour vérifier l'authenticité des paquets. Sans lui, apt ne peut pas mettre à jour les listes de paquets de manière sécurisée.
4. Problèmes de réseau à l'intérieur du chroot
Problème :
Des commandes comme apt update échouent avec des erreurs réseau, telles que :
Temporary failure resolving 'deb.debian.org'Solution :
L'environnement chroot pourrait ne pas avoir accès à la configuration réseau de l'hôte. Pour résoudre ce problème, copiez les paramètres DNS de l'hôte dans le chroot :
sudo cp /etc/resolv.conf /path/to/chroot/etc/resolv.confPourquoi cela fonctionne :
Le fichier resolv.conf contient les paramètres DNS. Le copier depuis l'hôte garantit que le chroot peut résoudre les noms de domaine.
5. Paquets Essentiels Manquants
Problème :
Les commandes de base comme ls ou bash ne fonctionnent pas à l'intérieur du chroot.
Solution :
Installez les paquets essentiels comme coreutils et bash :
sudo chroot /path/to/chroot apt update
sudo chroot /path/to/chroot apt install -y coreutils bashPourquoi cela fonctionne :
Le système de fichiers racine minimal créé par mmdebstrap pourrait ne pas inclure tous les paquets essentiels. Les installer garantit que le chroot est fonctionnel.
6. Démontage de /dev après utilisation
Problème :
Après avoir utilisé le chroot, vous oubliez de démonter /dev, laissant le répertoire /dev de l'hôte lié.
Solution :
Démontez toujours /dev lorsque vous avez terminé avec le chroot :
sudo umount /path/to/chroot/devDémonter /dev garantit que le répertoire /dev de l’hôte n’est pas laissé dans un état incohérent.
7. Utilisation de mmdebstrap avec --include
Problème :
Vous avez souvent besoin d'installer les mêmes paquets (par exemple, gpgv, gnupg) après avoir créé le chroot.
Solution :
Incluez ces paquets lors de la création du système de fichiers racine :
sudo mmdebstrap --variant=minbase --include=gpgv,gnupg stable /path/to/chrootL'option --include vous permet de spécifier des packages supplémentaires à installer pendant le processus de création, ce qui permet de gagner du temps et des efforts.
8. Nettoyage après les tests
Problème :
Le répertoire chroot occupe de l'espace disque, et vous oubliez de le supprimer après le test.
Solution :
Supprimez toujours le répertoire chroot lorsque vous avez terminé :
sudo rm -rf /path/to/chrootSupprimer le répertoire chroot libère de l'espace disque et maintient votre système propre.
9. Automatisation du processus (Optionnel)
Problème :
Vous créez et testez fréquemment des chroots et souhaitez automatiser le processus.
Solution :
Écrivez un script pour automatiser la création, le test et le nettoyage des chroots. Par exemple :
#!/bin/bash
# Create the chroot
sudo mmdebstrap --variant=minbase --include=gpgv,gnupg stable /tmp/debian-rootfs
# Mount /dev
sudo mount --bind /dev /tmp/debian-rootfs/dev
# Test the chroot (optional)
sudo chroot /tmp/debian-rootfs apt update
# Unmount /dev
sudo umount /tmp/debian-rootfs/dev
# Delete the chroot
sudo rm -rf /tmp/debian-rootfsEnregistrez ce script sous mmdebstrap-test.sh, rendez-le exécutable avec chmod +x mmdebstrap-test.sh, et exécutez-le :
./mmdebstrap-test.shConclusion
mmdebstrap est un outil puissant pour créer des systèmes basés sur Debian minimaux, mais il peut parfois générer des erreurs. En suivant ce guide de dépannage, vous pouvez rapidement résoudre les problèmes courants et reprendre le travail. N'oubliez pas de :
- Monter
/devà l'intérieur du chroot. - Installez
gpgvpour la vérification des paquets. - Copiez les paramètres DNS de l’hôte si nécessaire.
- Nettoyez après les tests pour libérer de l'espace disque.
Avec ces conseils, vous pourrez utiliser mmdebstrap efficacement.
