Autres langues English ; Français ; |
Accueil [en] → Accueil → Équipes → Packageurs → Les outils d'empaquetage Mageia → chroot pour empaqueteur
Attention ! Cette page est en cours de traduction. N'hésitez pas continuer la traduction, à la relire ou la corriger ! |
Contents
Pourquoi utiliser chroot ?
Souvent, lors de la construction ou de la reconstruction de paquets, vous devrez installer diverses bibliothèques et en-têtes de développement, dont beaucoup ne seront pas utilisés dans votre installation quotidienne.
Un environnement chroot autonome qui peut contenir tous les paquets de développement nécessaires est une excellente solution. Il peut facilement être sauvegardé et utilisé comme environnement de test et de construction, sans encombrer votre installation principale.
Et bien sûr, si vous parvenez à casser l’environnement chroot, il est aussi facile de le réparer qu’en restaurant la sauvegarde à partir d’une archive ou même en le redémarrant depuis le début.
Créer un chroot
Remarque : Mageia dispose d’un outil, iurt, qui est capable d’effectuer des constructions automatiques en utilisant un environnement chroot spécifique à chaque fois et qui permet également de réaliser des compilations croisées avec d’autres architectures. Vous aurez besoin d’une bande passante importante pour utiliser cet outil efficacement. |
Prérequis
- Accès à la racine du système Mageia en fonctionnement
- urpmi
- Accès à un miroir Mageia, soit distant (http/ftp/rsync…), soit local (nfs/cdrom/file…)
Installation d’un chroot
Vous devez créer votre répertoire de travail. (/mnt/chroot/cauldron
par exemple). Ce répertoire hébergera votre système Mageia chrooté.
mkdir -p /mnt/chroot/cauldron |
Configurez urpmi avec la commande urpmi.addmedia
. urpmi vous permet d'installer n'importe quelle version de Mageia dans un chroot sans modifier la configuration urpmi
de votre système en fonctionnement. Nous choisissons ici d'installer le système Mageia cauldron dans le chroot. Nous utiliserons l'option --distrib
de urpmi.addmedia
qui configure automatiquement le dépôt[1] pour urpmi
:
core
Core Updates
Nonfree
Nonfree Updates
Pour un système 32bits
urpmi.addmedia --distrib --urpmi-root /mnt/chroot/cauldron ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/Mageia/distrib/cauldron/i586 |
Pour un système 64bits
urpmi.addmedia --distrib --urpmi-root /mnt/chroot/cauldron ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/Mageia/distrib/cauldron/x86_64 |
Une liste de miroirs est disponible à l'adresse suivante https://mirrors.mageia.org/
Installer un système de base
Les paquets minimums exigés pour un chroot opérationnel sont :
basesystem-minimal
(required)urpmi
(required for self-contained chroot)locales-<XX>
(strongly recommended): where <XX> stands for the ISO code of the locale you usually use within your running system [1] In our example, locales-fr or locales-en.
Vous pouvez également installer des paquets supplémentaires lors de la configuration initiale. Par exemple : syslinux
urpmi --urpmi-root /mnt/chroot/cauldron basesystem-minimal urpmi locales-fr syslinux |
Accédez au chroot
Pour accéder au chroot ;
chroot /mnt/chroot/cauldron |
À l’intérieur du chroot isolé, vous pouvez travailler avec celui-ci comme s’il s’agissait d’un système normal. Vous pouvez « quitter » le chroot avec la commande exit
.
Configuration minimale
- Configuration du DNS : Afin d'avoir une connexion réseau fonctionnelle dans notre chroot, vous devez remplir dans
/mnt/chroot/cauldron/etc/resolv.conf
, l'adresse DNS de votre fournisseur. Vous pouvez simplement copier votre/etc/resolv.conf
fonctionnel dans le chroot/mnt/chroot/cauldron/etc/resolv.conf
.
cp /etc/resolv.conf /mnt/chroot/cauldron/etc/resolv.conf |
- Monter le système de fichiers
/proc
: en dehors du chroot, monter le système de fichiers virtuel/proc
de votre système en cours d'exécution à l'intérieur de votre chroot.
mount -o bind /proc /mnt/chroot/cauldron/proc |
Construire des paquets
Dans l'environnement chroot, vous devez maintenant installer les paquets suivants :
- rpm : notre version corrigée de la version de Red Hat.
- rpm-build : les scripts utilisés pour construire les paquets.
- spec-helper : un outil pour minimiser les specfiles en réalisant des tâches automatiques telles que le dépouillement des binaires et la compression des pages man.
- libtool : utilisé par certains scripts configure pour construire des bibliothèques partagées.
- rpmlint : utilisé pour vérifier la validité du rpm généré.
Vous pouvez maintenant suivre le guide Construire des paquetages RPM tout en utilisant l'environnement chroot.
Bonus
Accédez à votre système chrooté via SSH
Entrez dans votre système chrooté
chroot /mnt/chroot/cauldron |
Installer Le openssh-server
paquet dans votre chroot
# urpmi openssh-server |
Changez le port par défaut (port 22), qui sera utilisé par le serveur SSH de votre système chrooté, en un autre port, 2222 par exemple, afin qu'il n'entre pas en conflit avec le serveur SSH réel qui pourrait fonctionner sur la machine hôte. Vous devrez modifier /etc/ssh/sshd_config
# $OpenBSD: sshd_config,v 1.74 2006/07/19 13:07:10 dtucker Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. (…) Port 2222 (…) |
Lancez le serveur ssh de votre système chrooté
systemctl start sshd |
Ajoutez un utilisateur dans votre chroot avec useradd
useradd jdoe passwd jdoe |
Quitter le chroot
exit |
Maintenant, aussi longtemps que le système de fichiers /proc
est monté à l'intérieur de votre chroot et que votre serveur sshd chrooté fonctionne, vous devriez être en mesure de vous connecter à votre système chrooté via ssh comme ceci
ssh jdoe@localhost -p 2222 |
Si vous n'obtenez pas de shell après avoir tapé le mot de passe, vous devrez peut-être ajouter ceci à /etc/fstab
dans le chroot :
none /dev/pts devpts defaults 0 0 |
Et puis, bien sûr, le monter.
mount /dev/pts |
Accédez à d’autres partitions
Toutes les autres partitions disponibles peuvent également être partagées avec le chroot en les liant à un montage de la même manière que nous l’avons fait avec /proc
.
Par exemple, si votre /home
est une partition séparée ;
mount -o bind /home /mnt/chroot/cauldron/home |
ou pour les supports externes;
mount -o bind /chemin/vers/media /mnt/chroot/cauldron/media/external |