Provided by: schroot_1.6.10-1ubuntu3_amd64 bug

NOM

       Foire aux questions de schroot

DESCRIPTION

       Cette  page  de  manuel  couvre  différentes  questions fréquentes sur la configuration et
       l'utilisation de schroot.

CONFIGURATION

   Pourquoi schroot écrase-t-il des fichiers de configuration dans le chroot ?
       Par défaut, schroot copie les bases de donnée NSS du système (‘passwd’, ‘shadow’, ‘group’,
       ‘gshadow’,  ‘services’,  ‘protocols’, ‘networks’, ‘hosts’, etc.) dans le chroot. La raison
       est que l'environnement de chroot n'est pas complètement séparé du système, et copier  ces
       fichiers  permet  de  les maintenir à jour. Cependant, ce n'est pas toujours désirable, en
       particulier si installer un paquet dans le chroot crée des utilisateurs et groupes système
       qui  ne  sont  pas  présents  chez l'hôte, car ils disparaîtront la prochaine fois que les
       bases de données seront copiées.

       La solution de repli suggérée ici est de désactiver la copie. Cela peut être  effectué  en
       définissant  la  clé  setup.nssdatabases  comme  vide dans schroot.conf. Dans les versions
       précédentes de schroot, c'était effectué en commentant le  fichier  NSSDATABASES  pour  le
       chroot  (/etc/schroot/default/config  par  défaut). La liste de bases de données peut être
       également personnalisée en éditant le fichier contenant la  liste  des  bases  de  données
       (/etc/schroot/default/nssdatabases par défaut).

       Prochainement, nous travaillerons à un meilleur schéma pour garder les bases de données de
       l'hôte et du chroot synchronisées ce qui  permettra  des  fusions  d'entrée  plutôt  qu'un
       écrasement  entier  de  la base de données et qui garderait les changements spécifiques du
       chroot.

   Quel type de chroot dois-je utiliser : « plain » ou « directory » ?
       Ces deux types de  chroot  sont  en  principe  équivalents  car  ce  sont  simplement  des
       répertoires  du  système de fichiers. « plain » est très simple et n'effectue aucune tâche
       de mise en place ; la seule raison pour laquelle vous pourriez vouloir l'utiliser est  que
       vous  mettez  à  niveau depuis un programme comme dchroot(1) ou chroot(8) qui ne font rien
       d'autre qu'exécuter une commande ou un shell dans un  répertoire.  D'un  autre  coté,  les
       chroots  « directory »  exécutent  des  scripts  de  mise  en place qui peuvent monter des
       systèmes de fichiers additionnels ou d'autres tâches de mise en place.

CONFIGURATION AVANCÉE

   Que sont les « clichés »  snapshots ») et les « unions » ?
       Certains types de chroot supportent le clonage. Cela veut dire que quand vous démarrez une
       session  vous  obtenez  une  copie  du chroot qui ne dure que pour la durée de la session.
       C'est utile quand vous voulez une copie  propre  temporaire  du  système  pour  une  tache
       simple,  qui  est  ensuite  automatiquement  détruite  quand  vous ne l'utilisez plus. Par
       exemple, le service de construction des paquets Debian exécute sbuild(1)  pour  construire
       les  paquets Debian qui utilise schroot pour créer un environnement de construction propre
       pour chaque paquet. Sans cliché, le chroot devrait être réinitialisé à la  fin  de  chaque
       construction  afin  de  le  préparer  pour  le  suivant,  et  chaque  débris laissé par la
       désinstallation  de  paquet  ou  de  construction  précédente  peut  interférer  avec   la
       construction suivante.

       La  méthode  de  cliché  la  plus  utilisée  utilise  les  clichés  LVM  (chroot  de  type
       ‘lvm-snapshot’). Dans ce cas, le chroot doit exister sur un volume logique LVM (LV) ;  les
       clichés  d'un  LV  peuvent  ainsi  être  effectués  avec  la  commande lvcreate(8) pendant
       l'initialisation de la session  de  chroot.  Cependant,  cela  utilise  beaucoup  d'espace
       disque.  Une nouvelle méthode consiste à utiliser les clichés Btrfs qui utilisent beaucoup
       moins d'espace disque (chroot de type ‘btrfs-snapshot’), et peuvent être plus sûrs que les
       clichés LVM. Cependant, Btrfs est encore expérimental, mais cela deviendra certainement la
       méthode conseillée quand il deviendra mature.

       Les unions sont des alternatives aux clichés. Dans ce cas, au lieu de créer une  copie  du
       système  de  fichiers  du  chroot,  un  système  de  fichiers  temporaire inscriptible est
       superposé au système de fichiers du chroot. Toute modification est ainsi  sauvée  dans  la
       surcouche, laissant le système de fichier du chroot original inchangé. Le noyau Linux doit
       pour le moment intégrer le support des  unions  de  système  de  fichiers  comme  aufs  et
       unionfs. ainsi les clichés LVM restent la méthode recommandée pour le moment.

UTILISATION

   Puis-je exécuter un service  daemon ») dans un chroot ?
       Un  problème  commun  est  d'essayer d'exécuter un service dans un chroot et découvrir que
       cela ne marche pas. Typiquement, le service est tué rapidement après avoir été démarré.

       Quand schroot est exécuté, il  initie  une  session,  exécute  la  commande  ou  le  shell
       spécifié,  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  tâche  de  fond  et  se détachent du terminal les contrôlant. Ils font cela en
       forquant deux fois et en laissant le processus parent se terminer. Malheureusement schroot
       détecte  que  le  programme  s'est  terminé  (le  service est un orphelin petit-fils 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 service lors de la
       fermeture de la session.

       En conséquence, il n'est pas possible d'exécuter un service directement avec schroot. Vous
       pouvez  cependant  le  faire  si  vous  créez  une session avec --begin-session et ensuite
       exécutez le service avec --run-session. Il est alors de votre responsabilité  de  terminer
       la  session  avec  --end-session  quand  le  service  a terminé ou que vous n'en avez plus
       besoin.

   Comment puis-je nettoyer manuellement une session cassée ?
       Occasionnellement, il peut être nécessaire  de  nettoyer  manuellement  des  sessions.  Si
       quelque chose a changé dans votre système qui fait échouer le script de mise en place lors
       de la fin de session, par exemple en retirent un fichier ou  répertoire  requis,  il  peut
       être  impossible  à  schroot  de  nettoyer tout automatiquement. Pour chaque répertoire de
       session listé dans la section “Répertoires de session” dans schroot(1), tout fichier  avec
       le nom d'un identifiant de session doit être supprimé, et tout répertoire avec le nom d'un
       identifiant de session doit être démonté (s'il y a  des  systèmes  de  fichiers  montés  à
       l'intérieur) et également supprimé.

       Par exemple, pour supprimer une session nommée ma-session à la main :

       •      Supprimez le fichier de configuration de la session
              % rm /var/lib/schroot/session/ma-session↵

       •      Vérifiez les systèmes de fichiers
              % /usr/lib/x86_64-linux-gnu/schroot/schroot-listmounts -m \
                /var/lib/schroot/mount/ma-session↵

       •      Démontez tout système de fichiers

       •      Supprimez  /var/lib/schroot/mount/ma-session

       •      Répétez   pour   les   autres  répertoires  comme  /var/lib/schroot/union/underlay,
              /var/lib/schroot/union/overlay et /var/lib/schroot/unpack

       NOTE : Ne supprimez aucun répertoire sans vérifier s'il  y  a  des  systèmes  de  fichiers
       montés sous eux, car les systèmes de fichiers comme /home peuvent toujours être montés. Ne
       pas le faire peut engendrer la perte irréparable de données.

UTILISATION AVANCÉE

   Comment utiliser les sessions ?
       Lors d'une utilisation normale, lancer une commande peut ressembler à ça :
       % schroot -c squeeze -- commande↵

       Cela lancera la commande commande dans le chroot squeeze.  Alors  qu'il  n'est  pas  clair
       qu'une session est utilisée ici, schroot effectue en fait les étapes suivantes :

       •      Création  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 connaître.

       •      Les  scripts  de  mise en place sont exécutés pour créer la session de chroot et la
              configurent pour vous.

       •      La commande commande est exécutée dans la session de chroot.

       •      Les scripts de mise en place sont exécutés pour nettoyer le session de chroot.

       •      La session est supprimée.

       Maintenant  si  vous  voulez  exécuter  plus  d'une  commande,  vous  pouvez  exécuter  un
       interpréteur  de commandes et les exécuter interactivement, ou vous pouvez les mettre dans
       un script shell et l'exécuter à leur place. Mais vous pourriez vouloir faire quelque chose
       d'intermédiaire, comme exécuter des commandes arbitraires d'un programme ou script où vous
       ne connaissez pas quelle commande exécuter à l'avance.  Vous  pourriez  également  vouloir
       préserver  l'état du chroot entre les commandes. C'est la raison d'être des sessions : une
       fois créée, la session est persistante et ne sera pas automatiquement supprimée. Avec  une
       session,  vous  pouvez  exécuter  autant  de commandes que vous le voulez, mais vous devez
       créer et supprimer la session manuellement car schroot ne peut  pas  savoir  par  lui-même
       quand  vous  avez  fini  à  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 crée une nouvelle session basée sur le chroot squeeze. Le nom unique de  la  session,
       l'identifiant  de  session,  a  été  écrit  sur  la  sortie  standard.  Nous  pouvons donc
       l'enregistrer en tant que variable shell en même temps comme cela :
       % SESSION=$(schroot --begin-session -c squeeze)↵
       % echo $SESSION↵
       squeeze-57a69547-e014-4f5d-a98b-f4f35a005307

       Maintenant nous avons créé 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 commande 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 générés automatiquement peuvent être longs et peu maniables,
       l'option --session-name vous permet de spécifier 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  <buildd-tools-devel@lists.alioth.debian.org>  est  utilisée  pour
       l'aide  aux  utilisateurs  et  les discussions au sujet du développement. Vous pouvez vous
       inscrire    à    la    liste    sur    le    site    web    du    projet    à    l'adresse
       https://alioth.debian.org/projects/buildd-tools/  ou  via  l'interface  du gestionnaire de
       listes à l'adresse http://lists.alioth.debian.org/mailman/listinfo/buildd-tools-devel.

   Signaler des bogues.
       Sur les système Debian,  les  bogues  peuvent  être  signalés  en  utilisant  l'utilitaire
       reportbug(1)   ou   en   envoyant   un   message   à  <submit@bugs.debian.org>  (consultez
       http://bugs.debian.org pour plus de détail sur comment le faire).

   Obtenir les dernières sources.
       schroot est maintenu dans le système de gestion de source git.  Vous  pouvez  obtenir  les
       dernières sources à partir de git://git.debian.org/git/buildd-tools/schroot.
       % git clone git://git.debian.org/git/buildd-tools/schroot↵

       La  branche  maîtresse contient la version de développement courante. Les versions stables
       peuvent être trouvées dans les branches. Par exemple  la  série  de  version  1.4  est  la
       branche schroot-1.4.

AUTEURS

       Roger Leigh.

COPYRIGHT

       Copyright © 2005-2012 Roger Leigh <rleigh@debian.org>

       schroot  est  un  logiciel  libre :  vous  pouvez  le  redistribuer  et/ou le modifier aux
       conditions définies dans la licence publique générale GNU telle que publiée  par  la  Free
       Software Foundation ; version 2 ou, selon votre préférence, toute version ultérieure.

VOIR AUSSI

       dchroot(1), schroot(1), sbuild(1), schroot-setup(5), schroot.conf(5).