Provided by: schroot_1.6.10-9ubuntu0.1_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 « instantanés »  snapshots ») et les « unions » ?
       Certains types de chroot gèrent 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, les démons de construction des paquets Debian exécutent sbuild(1) pour construire
       les  paquets  Debian  et  ce  programme  utilise  schroot  pour  créer un environnement de
       construction propre pour chaque paquet. Sans création d'instantané, 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 création d'instantané la plus utilisée utilise les instantanés LVM (chroot
       de type ‘lvm-snapshot’). Dans ce cas, le chroot doit exister sur  un  volume  logique  LVM
       (LV) ;  les  instantané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 instantanés Btrfs qui
       utilisent beaucoup moins d'espace disque (chroot de  type  ‘btrfs-snapshot’),  et  peuvent
       être  plus  sûrs  que  les instantané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 instantané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 n'a
       pas encore intégré la prise en charge des unions de système  de  fichiers  comme  aufs  et
       unionfs. Ainsi les instantanés LVM restent la méthode recommandée pour le moment.

UTILISATION

   Puis-je exécuter un démon  daemon ») dans un chroot ?
       Un  problème commun est d'essayer d'exécuter un démon dans un chroot et découvrir que cela
       ne marche pas. Typiquement, le démon 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
       fourchant deux fois et en  laissant  le  processus  parent  se  terminer.  Malheureusement
       schroot  détecte que le programme s'est terminé (le démon 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 démon lors de la
       fermeture de la session.

       En conséquence, il n'est pas possible d'exécuter un démon directement avec  schroot.  Vous
       pouvez  cependant  le  faire  si  vous  créez  une session avec --begin-session et ensuite
       exécutez le démon avec --run-session. Il est alors de votre responsabilité de terminer  la
       session avec --end-session quand le démon 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 les scripts de  mise  en  place
       lors  de  la  fin de session, par exemple le retrait d'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 montés
              % /usr/lib/x86_64-linux-gnu/schroot/schroot-listmounts -m \
                /var/run/schroot/mount/ma-session↵

       •      Démontez tout système de fichiers monté

       •      Supprimez  /var/run/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 pourraient toujours être  montés
       en liaison. 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 évident
       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 la 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  savez  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 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 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 avec l'interface  du  gestionnaire  de
       listes à l'adresse http://lists.alioth.debian.org/mailman/listinfo/buildd-tools-devel.

   Signaler des bogues.
       Sur  les  systèmes  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étails 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), sbuild(1), schroot(1), schroot.conf(5), schroot-setup(5).