gpocentek..blog

janvier 27, 2009

Erreurs à ne plus faire

Filed under: FOSS — gpocentek @ 19:40

Notes pour l’avenir :

  • ne pas écrire de bot IRC en perl, sinon on finit par le ré-écrire en python (mais en mieux, donc ça va) ;
  • mettre des espaces dans du code C… Merci vim et les regexps pour ajouter un espace entre nom de fonction et parenthèse ouvrante :
    :%s/\([^ |_]\)(/\1 (/g
  • ne pas rester trop longtemps sans session U-Classroom (n’oubliez pas de venir nous voir jeudi soir si le packaging debian/ubuntu vous intéresse).

janvier 9, 2009

Chroot CentOS sous Debian

Filed under: FOSS — gpocentek @ 20:56

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 $@"

Powered by WordPress