Man page - schroot-faq(7)
Packages contains this manual
Available languages:
en fr deManual
FAQ de SCHROOT
NOMDESCRIPTION
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.