Chroot-i386-dev
Cet article a pour but de vous aider à mettre en place un environnement de compilation i386 sur une Debian amd64.
Pourquoi ?
Il ne semble pas possible de compiler directement des paquets pour une architecture i386 sur un système en amd64 sans devoir d'abord désinstaller tous vos outils de compilations habituels à cause d'une incompatibilité entre les versions i386 et amd64 de certains d'entre eux (gcc le premier).
Une méthode simple pour éviter cette désinstallation/réinstallation à chaque compilation d'architecture différente est de mettre en place un chroot i386 réservé à cet usage sur votre système amd64.
Les outils
Cet article a été réalisé avec la version 1.0.44 de debootstrap, ainsi que le programme chroot inclus dans la version 8.20-3 de coreutils.
J'utilise aussi apt-p2p en version 0.1.6+nmu1, qui n'est pas nécessaire à la mise en place de cet environnement de compilation.
La mise en place de l'environnement de compilation
Toutes les commandes proposées par la suite sont à exécuter en root.
J'ai choisi de nommer mon chroot "chroot-i386" et de le placer dans /root/.
Il faut tout d'abord créer un dossier vide prêt à l'accueillir :
mkdir chroot-i386
Puis on installe un système minimal + les outils de nécessaires aux compilations qui y prendront place :
version de la commande avec apt-p2p :
debootstrap --verbose --arch=i386 --include=apt-p2p,apt-utils,locales,whiptail,build-essential --variant=minbase sid ./chroot-i386/ http://127.0.0.1:9977/ftp.fr.debian.org/debian/
version de la commande sans apt-p2p :
debootstrap --verbose --arch=i386 --include=apt-utils,locales,whiptail,build-essential --variant=minbase sid ./chroot-i386/ http://ftp.fr.debian.org/debian/
Le téléchargement s'effectue et on se retrouve (plus ou moins) rapidement avec un système minimal auquel il ne manque que quelques retouches.
Il faut tout d'abord y placer un sources.list adéquat, dans mon cas je me contente de copier celui de mon système actuel puis d'y effectuer quelques modifications (essentiellement y supprimer des dépôts inutiles pour cet environnement) :
cp /etc/apt/sources.list ./chroot-i386/etc/apt/sources.list nano ./chroot-i386/etc/apt/sources.list
Pour l'exemple, voici le sources.list que j'utilise dans mon environnement de compilation :
# Debian deb http://localhost:9977/ftp.fr.debian.org/debian/ stable main deb http://localhost:9977/ftp.fr.debian.org/debian/ stable-updates main deb http://localhost:9977/security.debian.org/ stable/updates main deb http://localhost:9977/ftp.fr.debian.org/debian/ testing main deb http://localhost:9977/security.debian.org/ testing/updates main deb http://localhost:9977/ftp.fr.debian.org/debian/ unstable main deb http://localhost:9977/ftp.fr.debian.org/debian/ experimental main # Debian - sources deb-src http://localhost:9977/ftp.fr.debian.org/debian/ stable main deb-src http://localhost:9977/ftp.fr.debian.org/debian/ stable-updates main deb-src http://localhost:9977/security.debian.org/ stable/updates main deb-src http://localhost:9977/ftp.fr.debian.org/debian/ testing main deb-src http://localhost:9977/security.debian.org/ testing/updates main deb-src http://localhost:9977/ftp.fr.debian.org/debian/ unstable main deb-src http://localhost:9977/ftp.fr.debian.org/debian/ experimental main
J'y copie ensuite mon fichier apt.conf pour conserver les réglages d'APT de mon système habituel :
cp /etc/apt/apt.conf ./chroot-i386/etc/apt/apt.conf
Premiers pas dans ce nouvel environnement
Pour finaliser les derniers réglages, je vais devoir entrer dans ce chroot :
chroot ./chroot-i386/
J'en profite pour vérifier que je suis bien sur une architecture i386 avec la commande suivante :
dpkg --print-architecture
Aucune locale n'est définie par défaut dans cet environnement, ce qui va vite poser problème vu que son utilisation implique une utilisation massive de la ligne de commande. J'en définis donc une avec la commande suivante :
dpkg-reconfigure locales
Enfin, je n'ai plus qu'à mettre à jour les listes de paquets d'APT pour que ce chroot soit prêt à compiler :
apt-get update
Et voilà !
Pour utiliser cet environnement de compilation, il me suffit d'entrer la commande "chroot /root/chroot-i386", et pour le quitter d'entrer la commande "exit".
Vv222 (discussion) 15 décembre 2012 à 13:13 (CET)
source : Installation chroot 32 bits transparent (par fran.b)