Man page - schroot-faq(7)

Packages contains this manual

Available languages:

en fr de

Manual

FAQ de SCHROOT

NOM
DESCRIPTION
CONFIGURATION
Pourquoi schroot écrase-t-il des fichiers de configuration dans le chroot ?
Quel type de chroot dois-je utiliser : « plain » ou « directory » ?
CONFIGURATION AVANCÉE
Que sont les « instantanés » (« snapshots ») et les « unions » ?
UTILISATION
Puis-je exécuter un démon (« daemon ») dans un chroot ?
Comment puis-je nettoyer manuellement une session cassée ?
UTILISATION AVANCÉE
Comment utiliser les sessions ?
CONTRIBUER
Recevoir de l’aide ou s’impliquer.
Signaler des bogues.
Obtenir les derniĂšres sources.
AUTEURS
COPYRIGHT
VOIR AUSSI
TRADUCTION

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@codelibre.net>

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).

TRADUCTION

Ce document est une traduction, réalisée par Thomas Blein le 30 mai 2012.

L’équipe de traduction a fait le maximum pour rĂ©aliser une adaptation française de qualitĂ©.

La version anglaise de ce document est toujours consultable en ajoutant l’option « -L C » Ă  la commande man .

N’hĂ©sitez pas Ă  signaler Ă  l’auteur ou Ă  la liste de traduction < debian-l10n-french@lists.debian.org >, selon le cas, toute erreur dans cette page de manuel.