FAQ de SCHROOT(7) 2022 FAQ de SCHROOT(7) NOM Foire aux questions de schroot DESCRIPTION Cette page de manuel couvre differentes questions frequentes sur la configuration et l'utilisation de schroot. CONFIGURATION Pourquoi schroot ecrase-t-il des fichiers de configuration dans le chroot ? Par defaut, schroot copie les bases de donnee NSS du systeme (`passwd', `shadow', `group', `gshadow', `services', `protocols', `networks', `hosts', etc.) dans le chroot. La raison est que l'environnement de chroot n'est pas completement separe du systeme, et copier ces fichiers permet de les maintenir a jour. Cependant, ce n'est pas toujours desirable, en particulier si installer un paquet dans le chroot cree des utilisateurs et groupes systeme qui ne sont pas presents chez l'hote, car ils disparaitront la prochaine fois que les bases de donnees seront copiees. La solution de repli suggeree ici est de desactiver la copie. Cela peut etre effectue en definissant la cle setup.nssdatabases comme vide dans schroot.conf. Dans les versions precedentes de schroot, c'etait effectue en commentant le fichier NSSDATABASES pour le chroot (/etc/schroot/default/config par defaut). La liste de bases de donnees peut etre egalement personnalisee en editant le fichier contenant la liste des bases de donnees (/etc/schroot/default/nssdatabases par defaut). Prochainement, nous travaillerons a un meilleur schema pour garder les bases de donnees de l'hote et du chroot synchronisees ce qui permettra des fusions d'entree plutot qu'un ecrasement entier de la base de donnees et qui garderait les changements specifiques du chroot. Quel type de chroot dois-je utiliser : << plain >> ou << directory >> ? Ces deux types de chroot sont en principe equivalents car ce sont simplement des repertoires du systeme de fichiers. << plain >> est tres simple et n'effectue aucune tache de mise en place ; la seule raison pour laquelle vous pourriez vouloir l'utiliser est que vous mettez a niveau depuis un programme comme dchroot(1) ou chroot(8) qui ne font rien d'autre qu'executer une commande ou un shell dans un repertoire. D'un autre cote, les chroots << directory >> executent des scripts de mise en place qui peuvent monter des systemes de fichiers additionnels ou d'autres taches de mise en place. CONFIGURATION AVANCEE Que sont les << instantanes >> (<< snapshots >>) et les << unions >> ? Certains types de chroot gerent le clonage. Cela veut dire que quand vous demarrez une session vous obtenez une copie du chroot qui ne dure que pour la duree de la session. C'est utile quand vous voulez une copie propre temporaire du systeme pour une tache simple, qui est ensuite automatiquement detruite quand vous ne l'utilisez plus. Par exemple, les demons de construction des paquets Debian executent sbuild(1) pour construire les paquets Debian et ce programme utilise schroot pour creer un environnement de construction propre pour chaque paquet. Sans creation d'instantane, le chroot devrait etre reinitialise a la fin de chaque construction afin de le preparer pour le suivant, et chaque debris laisse par la desinstallation de paquet ou de construction precedente peut interferer avec la construction suivante. La methode de creation d'instantane la plus utilisee utilise les instantanes LVM (chroot de type `lvm-snapshot'). Dans ce cas, le chroot doit exister sur un volume logique LVM (LV) ; les instantanes d'un LV peuvent ainsi etre effectues avec la commande lvcreate(8) pendant l'initialisation de la session de chroot. Cependant, cela utilise beaucoup d'espace disque. Une nouvelle methode consiste a utiliser les instantanes Btrfs qui utilisent beaucoup moins d'espace disque (chroot de type `btrfs-snapshot'), et peuvent etre plus surs que les instantanes LVM. Cependant, Btrfs est encore experimental, mais cela deviendra certainement la methode conseillee quand il deviendra mature. Les unions sont des alternatives aux instantanes. Dans ce cas, au lieu de creer une copie du systeme de fichiers du chroot, un systeme de fichiers temporaire inscriptible est superpose au systeme de fichiers du chroot. Toute modification est ainsi sauvee dans la surcouche, laissant le systeme de fichier du chroot original inchange. Le noyau Linux n'a pas encore integre la prise en charge des unions de systeme de fichiers comme aufs et unionfs. Ainsi les instantanes LVM restent la methode recommandee pour le moment. UTILISATION Puis-je executer un demon (<< daemon >>) dans un chroot ? Un probleme commun est d'essayer d'executer un demon dans un chroot et decouvrir que cela ne marche pas. Typiquement, le demon est tue rapidement apres avoir ete demarre. Quand schroot est execute, il initie une session, execute la commande ou le shell specifie, attend que cette commande ou ce shell se termine et ferme la session. Pour une commande ou un shell normal, cela marche bien. Cependant les services commencent par se lancer en tache de fond et se detachent du terminal les controlant. Ils font cela en fourchant deux fois et en laissant le processus parent se terminer. Malheureusement schroot detecte que le programme s'est termine (le demon est un petit-fils orphelin de ce processus) et il ferme la session. Une partie de la terminaison de la session est de tuer tous les processus restant dans le chroot, ce qui veut dire tuer le demon lors de la fermeture de la session. En consequence, il n'est pas possible d'executer un demon directement avec schroot. Vous pouvez cependant le faire si vous creez une session avec --begin-session et ensuite executez le demon avec --run-session. Il est alors de votre responsabilite de terminer la session avec --end-session quand le demon a termine ou que vous n'en avez plus besoin. Comment puis-je nettoyer manuellement une session cassee ? Occasionnellement, il peut etre necessaire de nettoyer manuellement des sessions. Si quelque chose a change dans votre systeme qui fait echouer les scripts de mise en place lors de la fin de session, par exemple le retrait d'un fichier ou repertoire requis, il peut etre impossible a schroot de nettoyer tout automatiquement. Pour chaque repertoire de session liste dans la section "Repertoires de session" dans schroot(1), tout fichier avec le nom d'un identifiant de session doit etre supprime, et tout repertoire avec le nom d'un identifiant de session doit etre demonte (s'il y a des systemes de fichiers montes a l'interieur) et egalement supprime. Par exemple, pour supprimer une session nommee ma-session a la main : o Supprimez le fichier de configuration de la session % rm /var/lib/schroot/session/ma-session o Verifiez les systemes de fichiers montes % /usr/lib/schroot/schroot-listmounts -m \ /var/run/schroot/mount/ma-session o Demontez tout systeme de fichiers monte o Supprimez /var/run/schroot/mount/ma-session o Repetez pour les autres repertoires comme /var/lib/schroot/union/underlay, /var/lib/schroot/union/overlay et /var/lib/schroot/unpack NOTE : Ne supprimez aucun repertoire sans verifier s'il y a des systemes de fichiers montes sous eux, car les systemes de fichiers comme /home pourraient toujours etre montes en liaison. Ne pas le faire peut engendrer la perte irreparable de donnees. UTILISATION AVANCEE Comment utiliser les sessions ? Lors d'une utilisation normale, lancer une commande peut ressembler a ca : % schroot -c squeeze -- commande Cela lancera la commande commande dans le chroot squeeze. Alors qu'il n'est pas evident qu'une session est utilisee ici, schroot effectue en fait les etapes suivantes : o Creation d'une session utilisant le chroot squeeze. Cela va donner automatiquement un nom unique, comme squeeze-57a69547-e014-4f5d-a98b-f4f35a005307, que normalement vous n'avez pas besoin de connaitre. o Les scripts de mise en place sont executes pour creer la session de chroot et la configurent pour vous. o La commande commande est executee dans la session de chroot. o Les scripts de mise en place sont executes pour nettoyer la session de chroot. o La session est supprimee. Maintenant si vous voulez executer plus d'une commande, vous pouvez executer un interpreteur de commandes et les executer interactivement, ou vous pouvez les mettre dans un script shell et l'executer a leur place. Mais vous pourriez vouloir faire quelque chose d'intermediaire, comme executer des commandes arbitraires d'un programme ou script ou vous ne savez pas quelle commande executer a l'avance. Vous pourriez egalement vouloir preserver l'etat du chroot entre les commandes. C'est la raison d'etre des sessions : une fois creee, la session est persistante et ne sera pas automatiquement supprimee. Avec une session, vous pouvez executer autant de commandes que vous le voulez, mais vous devez creer et supprimer la session manuellement car schroot ne peut pas savoir par lui-meme quand vous avez fini a l'exception du cas de la commande unique ci-dessus. C'est relativement facile : % schroot --begin-session -c squeeze squeeze-57a69547-e014-4f5d-a98b-f4f35a005307 Cela cree une nouvelle session basee sur le chroot squeeze. Le nom unique de la session, l'identifiant de session, a ete ecrit sur la sortie standard. Nous pouvons donc l'enregistrer en tant que variable shell en meme temps comme cela : % SESSION=$(schroot --begin-session -c squeeze) % echo $SESSION squeeze-57a69547-e014-4f5d-a98b-f4f35a005307 Maintenant nous avons cree la session et nous avons son identifiant, nous pouvons y lancer des commandes en utilisant l'identifiant de session : % schroot --run-session -c squeeze-57a69547-e014-4f5d-a98b-f4f35a005307 \ -- commande1 ou % schroot --run-session -c "$SESSION" -- commande1 et ensuite nous pouvons avoir autant de commandes que nous le voulons % schroot --run-session -c "$SESSION" -- commande2 % schroot --run-session -c "$SESSION" -- commande3 % schroot --run-session -c "$SESSION" -- commande4 etc. Quand nous avons fini avec cette session, nous pouvons la supprimer avec --end-session : % schroot --end-session -c squeeze-57a69547-e014-4f5d-a98b-f4f35a005307 ou % schroot --end-session -c "$SESSION" Comme les noms de sessions generes automatiquement peuvent etre longs et peu maniables, l'option --session-name vous permet de specifier votre propre nom : % schroot --begin-session -c squeeze --session-name mon-nom mon-nom CONTRIBUER Recevoir de l'aide ou s'impliquer. La liste de diffusion est utilisee pour l'aide aux utilisateurs et les discussions au sujet du developpement. Vous pouvez vous inscrire a la liste sur le site web du projet a l'adresse https://alioth.debian.org/projects/buildd-tools/ ou avec l'interface du gestionnaire de listes a l'adresse http://lists.alioth.debian.org/mailman/listinfo/buildd-tools-devel. Signaler des bogues. Sur les systemes Debian, les bogues peuvent etre signales en utilisant l'utilitaire reportbug(1) ou en envoyant un message a (consultez http://bugs.debian.org pour plus de details sur comment le faire). Obtenir les dernieres sources. schroot est maintenu dans le systeme de gestion de source git. Vous pouvez obtenir les dernieres sources a partir de git://git.debian.org/git/buildd-tools/schroot. % git clone git://git.debian.org/git/buildd-tools/schroot La branche maitresse contient la version de developpement courante. Les versions stables peuvent etre trouvees dans les branches. Par exemple la serie de version 1.4 est la branche schroot-1.4. AUTEURS Roger Leigh. COPYRIGHT Copyright (C) 2005-2012 Roger Leigh schroot est un logiciel libre : vous pouvez le redistribuer et/ou le modifier aux conditions definies dans la licence publique generale GNU telle que publiee par la Free Software Foundation, version 2 ou, selon votre preference, toute version ulterieure. VOIR AUSSI dchroot(1), sbuild(1), schroot(1), schroot.conf(5), schroot-setup(5). TRADUCTION Ce document est une traduction, realisee par Thomas Blein le 30 mai 2012. L'equipe de traduction a fait le maximum pour realiser une adaptation francaise de qualite. La version anglaise de ce document est toujours consultable en ajoutant l'option << -L C >> a la commande man. N'hesitez pas a signaler a l'auteur ou a la liste de traduction , selon le cas, toute erreur dans cette page de manuel. Aug 14 FAQ de SCHROOT(7)