Depuis quelques semaines je passe du temps sous RHEL/CentOS pour Ulteo, et j’ai commencé à bosser sur des rpms pour notre OVD. Utiliser une machine virtuelle n’est pas l’idéal (c’est long à démarrer), et après tout, un Linux est un Linux, ça tourne dans un chroot.
Je me suis donc construit un chroot CentOS 5, disponible pour les users grâce à dchroot. Ca s’installe en 10 minutes, alors pourquoi s’en priver ?
# Préparation de l'environnement
su
export CHROOT=/var/chroot/centos
# Construction du système de base
mkdir -p $CHROOT
apt-get install rinse
rinse --distribution centos-5 --directory $CHROOT
# Fstab
cat >> /etc/fstab <<EOF
# centos chroot
proc $CHROOT/proc proc defaults 0 0
/home $CHROOT /home none bind 0 0
/tmp $CHROOT/tmp none bind 0 0
/dev $CHROOT/dev none bind 0 0
devpts $CHROOT/dev/pts devpts defaults 0 0
EOF
mount -a
# Dchroot:
apt-get install dchroot
echo "centos $CHROOT" > /etc/dchroot.conf
echo CentOS > $CHROOT/etc/debian_chroot # le bashrc de debian affichera un joli prompt
chroot $CHROOT passwd # mot de passe root
chroot $CHROOT useradd -u uid_user user # pour éviter les problèmes de permission
chroot $CHROOT passwd user
C’est maintenant possible de tester :
exit
dchroot -c centos # en tant qu'user
Vous devriez voir un prompt du style :
(CentOS)gauvain@zero:~$
J’ai eu quelques soucis avec urxvt, mais il existe un workaround :
cat >> ~/.bashrc <<EOF
# urxvt terminal in centos
if [ "$TERM" = "rxvt-unicode" ] && grep -qi centos /etc/issue; then
TERM="rxvt"
export TERM
fi
EOF
Après avoir installé les paquets nécessaire dans le chroot, un simple wrapper (/usr/local/bin/rpmbuild par exemple) pour rpmbuild me permet de lancer des builds de rpms de manière transparente :
#!/bin/sh
dchroot -c centos -d "rpmbuild $@"