Bonjour à vous,
Après plusieurs années, à écumé ce forum, je me suis enfin inscrit 🙂.
Bon il faut dire que j'ai un problème :-D.
J'utilise Fedora depuis plus de 5 ans maintenant et je profite pour remercier tous les acteurs de cette magnifique distribution 🙂.
J'utilisais Fedora 17, jusqu'a il y a quelques jours, et puis j'ai enfin fait le grand saut pour passer à la dernière version.
Je suis désolé pour le laïus qui suis mais une petite mise en place s'impose au vue de mon problème.
-- two years ago --
Pour mon travail, développeur web, j'avais besoin d'avoir les mêmes version des paquets que notre serveur de production sous une vieille debian.
Mais il n'était pas question que je quitte fedora pour utiliser debian (bien que je n'ai rien à redire à cette distribution).
J'ai d'abord commencé par travailler avec une machine virtuelle contenant une debian, mais elle prenait beaucoup trop de ressource.
Alors j'ai trouver une solution idéale, (pour moi en tous cas).
J'utilisais un chroot de debian avec debootstrap et la même version qu'en production.
J'avais mis en place tous les montages proc et sys + les montages en bind pour pouvoir avoir mes sources dans le chroot.
Tous fonctionnait très bien.
// Attention petit aparté pour un premier problème mais qui pourrai répondre au problème principal
Puis un jour, après une mise à jour de systemd, mes montages fait sur le chroot était comme bi-latéraux.
J'explique :
Sur la fedora j'avais deux dossiers un dossier src et un dossier images. Le dossier images étant volumineux et ne voulant pas qu'il pollu mon dossier src (et surtout ne pas géner mon IDE (netbeans) qui annalysait tous les contenus malgrès la demande d'ignorer ce dossier) il était mis à part. Mais dans le chroot debian, je voulais que le dossier soit un sous-dossier de src. Du coup j'avais un premier montage (bind) de src dans le dossier www d'apache et ensuite un second montage de static dans www/src/images du chroot.
En gros : /home/florian/projet/src => /srv/debian/var/www/src et /home/florian/projet/images => /srv/debian/var/www/src/images
Tout fonctionnait et la vie était belle, et les oiseaux chantaient, ...
Pardons je m'égare.
Puis un jour arriva une mise à jour de systemd.
A partir de cette mise à jour le dossier images était monté dans le dossier /home/florian/projet/src/images en plus de /srv/debian/var/www/src/images .
Ne voulant pas de ce fonctionnement et par manque de temps de recherche contre ce problème je suis revenu à la version de base de systemd.
// Fin de l'aparté (dont je m'excuse mais considère necessaire :S )
-- today --
Je disait donc que j'avais un grand pas en avant en installant Fedora 19.
Après l'installation (plus que rapide j'ai trouvé), j'ai donc commencé à refaire ma configuration avec debootstrap.
J'ai mis en place mes montages, je me chroot, j'installe mes paquets, ça fonctionne, c'est cool.
Je vais pour lancer konsole sous fedora, et là c'est le drame, un écran noir dans la console, pas de terminal.
Je me débrouille pour avoir un message d'erreur et il me parle qu'il n'y a pas de pty (ou quelque chose comme ça, je ne me souvient plus).
Après quelque recherche, le problème vient du montage proc dans le chroot (plus ou moins le même problème que mon montage bi-latéral de mon aparté).
Du coup, j'enlève les montages et me retrouve sans chroot.
Donc je fais des recherches et tombe sur systemd et surtout systemd-nspawn :
# systemd-nspawn -D /srv/debian
Avec cette commande je me retrouve dans un chroot sur debian où je peux lancer mes services à la main. Par contre je n'ai pas trouver comment connecter d'autre console sur cet invité. Et puis dès que je quitte ma console mon chroot disparait.
Puis je tombe sur le commande suivante :
# systemd-nspawn -bD /srv/debian
C'est top, ça me lance le init du debian et tous les scripts qui vont avec dont apache, mysql et tout et tout.
Sauf que pareil, je ne sais pas comment me connecter sur une console sur cet invité.
Et puis je n'ai pas non plus trouver de solution pour arreter l'invité de manière plus "propre" que kill -9
Du coup je trouve que l'on peut lancer un service avec systemd dans un "chroot" avec le paramètre
RootDirectory=/srv/debian
:
[Unit]
Description=Chroot Debian Http Container
[Service]
RootDirectory=/srv/debian
ExecStart=/etc/init.d/apache2 start
RootDirectoryStartOnly=yes
Le service ce lance, je suis ce lancement avec
journalctl -f
mais le service s'arrete tous seul après quelques secondes.
De plus il y a une truc que je ne comprend pas car dans la doc de systemd, ils expliquent que RootDirectoryStartOnly=yes permet de lancer la commande dans ExecStart dans le chroot mais ExecStop, elle, ne l'ai pas.
Du coup je cherche une solution pour tout ça, je sais ça fait beaucoup.
Merci d'avoir pris le temps de me lire et pour toute proposition que vous pourriez avoir.