Mise en place du WiFi? par une passerelle
Jusqu'à maintenant on disposait du réseau wifi de l'UPS. Pour accéder à "l'extérieur", un PC a besoin de faire la passerelle via un tunnel ssh.
Supposons qu'on veuille se connecter à un quelconque wifi pour avoir internet. Disons sur l'interface eth1.
Adressage
Le LAN étant branché sur eth0, il faut un adressage basique, par exemple 192.168.1.0/255.255.255.0 pour notre sous réseau avec 192.168.1.1 comme passerelle.
Il faut donc déjà configurer eth0, soit par une interface, soit avec
ifconfig eth0 192.168.1.1
DHCP
Ensuite il faut installer un serveur DHCP pour que la configuration de tout le monde soit facile.
sudo apt-get install dhcp3-server
Et il faut éditer le fichier de config '/etc/dhcp3/dhcpd.conf', en rajoutant un bloc de la sorte:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
option routers 192.168.1.1;
option domain-name-servers 130.120.240.1;
}
où 130.120.240.1 est un DNS qui va bien avec la connexion à internet utilisée.
Routage et NAT
On active le routage des paquets, en root
echo 1 > /proc/sys/net/ipv4/ip_forward
Une dernière étape pour finir le routage, le NAT. On l'active pour tout ce qui sort par eth1:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Tunnels SSH
Pour contrer les ports fermés d'un firewall un peu restrictif, et si on a accès à une machine en SSH à l'extérieur, alors on peut utiliser des tunnels.
Par exemple:
ssh -gL 6668:irc.freenode.net:6667 -gL 3690:anonsvn.kde.org:3690 serveurssh.mondomaine.com
se connecte à serveurssh.mondomaine.com et créé 2 tunnels, 1 vers irc.freenode.net:6667 accessible depuis 192.168.1.1:6668 et l'autre vers anonsvn.kde.org:3690, accesible par 192.168.1.1:3690
Les variables d'environnement
Il est utile avant de commencer à installer/compiler KDE4 de positionner un certain nombres de variables d'environnement.
Pour commencer il faut éditer le .bashrc :
sudo kate /home/utilisateur/.bashrc
Il faut ensuite rajouter à la fin du fichier les lignes suivantes :
export QTDIR=$HOME/qt-unstable #Not sources, prefix. Where we will install the code generated from qt-copy
export KDEDIR=$HOME/kde
export KDEDIRS=$KDEDIR
export DBUSDIR=$KDEDIR
export ICEDIR=/usr/lib/icecc
export CMAKEDIR=$HOME/cmake
export PKG_CONFIG_PATH=$DBUSDIR/lib/pkgconfig:$PKG_CONFIG_PATH
export REPOSITORY=svn+ssh://compteKDE@svn.kde.org/home/kde #mettre ici son compte svn kde ou anonsvn
export PATH=$ICEDIR/bin/:$CMAKEDIR/bin:$QTDIR/bin:$KDEDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$KDEDIR/lib:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=$KDEDIR/lib/kde4/plugins/
export QMAKESPEC= #prevents trouble with old Qt3 installations
function cmakekde { cmake -DCMAKE_INSTALL_PREFIX=$HOME/kde \
-DCMAKE_BUILD_TYPE=debugfull $@ && make -j5 VERBOSE=1 && make install
}
svn
svn est l'utilitaire de gestion de version utilisé par KDE.
Changer de dépôt
Souvent pendant les hacking session, l'accès au port lié au protocole ''
svn://'' ne se fait pas directement, mais par un tunnel ssh.
Si vous avez récupéré un module depuis chez vous et que vous voulez le mettre à jour pendant une session, un simple ''svn up'' ne suffira pas. Il vous répondra qu'il est impossible de se connecter au dépôt utilisé. C'est tout à fait normal dans les cas où le port qui sert au protocole svn n'est pas ouvert. Il faut changer l'adresse du serveur des dépôts par celle de la passerelle.
Pour savoir quel dépôt est utilisé vous pouvez faire un ''svn info'', ou pour récupérer uniquement l'URL : <code>svn info | grep URL | cut -c7-</code>
Pour changer de dépôt on utilise l'option ''switch --relocate'' de svn. En supposant que le serveur utilisé normalement est anonsvn.kde.org, que la passerelle a pour IP : 192.168.1.1, et que vous souhaitez changer l'URL du dépôt du module kdelibs de KDE, ça donne :
svn switch --relocate svn://anonsvn.kde.org/home/trunk/KDE/kdelibs svn://192.168.1.1/home/trunk/KDE/kdelibs
Automatisation
Il arrive qu'on ait plusieurs module dont on doit changer le dépôt. Comme la commande ci-dessus est longue et un peu chiante on peut l'automatiser avec le scipt suivant :
#! /bin/bash
if [[ $# -le 0 ]]; then
base_dir="$PWD"
dest=$1
to_switch="kdelibs kdepimlibs kdebase"
for module in $to_switch; do
if [[ -d $module ]]; then
echo "- Switching $module -"
cd $module
source=`svn info | grep URL | cut -c7-`
echo "de :" $source " vers " $dest
echo "svn switch --relocate $source svn://$dest/home/kde/trunk/KDE/$module && cd $base_dir"
svn switch --relocate "$source" "svn://$dest/home/kde/trunk/KDE/$module"
cd $base_dir
fi
done
fi
Icecream
''Icecream'' est un outil venant avec KDE permettant de faire de la compilation répartie, et ainsi de bénéficier de la puissance de plusieurs machines pour des compilations lourdes. Les versions de chaque composant de ''icecream'' doivent être les mêmes (excepté pour ''icemon'') pour fonctionner correctement.
''Icecream'' comprend :
- un ''scheduler'' pour la coordination de la compilation. Il doit-être lancé sur une seule machine.
- un démon pour se mettre dans le cluster : ''iceccd''. Il est lancé sur chaque machine souhaitant rejoindre le cluster de compilation. On peut spécifier en option le nombre de processus de compilation qu'on veut recevoir.
- un moniteur permettant de suivre la compilation répartie sur le cluster sous différentes visualisations : ''icemon''.
Installation de Icecream
Récupération des sources
(à rédiger)
Compilation
Pour la compilation, voir la section suivante dédiée à la compilation d'un module de KDE.
Utilisation de icecream
On suppose que icecream a été installé dans le répertoire contenu par la variable ICEDIR (par exemple /opt/icecream).
- Lancer le scheduler : <code>sudo $ICEDIR/sbin/scheduler -d</code>
- Se mettre dans le cluster de compilation : <code>sudo $ICEDIR/sbin/iceccd -d -m4</code>
L'option "''-d''" c'est pour lancer ''iceccd'' en démon. L'option "''-m4''" c'est pour définir le nombre de processus que la machine hôte pourra acceuillir. Ici elle pourra acceuillir 4 compilations.
- Compiler sur le cluster : <code>make -j4</code>
Il faut utiliser le ''g++'' fourni avec icecream. Pour ça, il suffit d'exporter le chemin adéquat dans la variable PATH : <code>export PATH=$ICEDIR/bin/:$PATH</code>
Ensuite, on utilise ''make'' avec l'option "''-j''" suivie du nombre de machines.
Icemon
Récupération des sources
On commence par récupérer la branche de KDE contenant icemon. L'option "''-N''" est là pour désactiver la récursion dans les sous-répertoires.
svn co -N svn+ssh://svn.kde.org/home/trunk/kde/playground/devtools
On récupère le module icemon
cd devtools
svn up icemon-kde4
Compiler un module KDE
L'ensemble des sources et des parties de KDE est assez gigantesque. Il est rarement question de récupérer tout KDE en entier sur sa machine locale, mais plutôt de n'en récupérer que certains morceaux.
Imaginons qu'on souhaite récupérer le module contenu dans la variable ''module''.
Typiquement ''module'' peut-être ''kdelibs'', ''kdebase''...
Le dépôt est stocké dans la variable ''repository''. Si vous n'avez pas de compte svn pour les dépôts KDE, le mieux est d'utiliser
''
svn://anonsvn.kde.org/home/kde'' pour comme base de dépôt. Le reste est consultable en ligne avec un navigateur web sur
KDE.
Récupération du module
Exemple :
svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdelibs
Création des bluids
Exemple :
mkdir kdelibs-build
cd kdelibs-build
cmake ../kdelibs (avec éventuellement des options)
Compilation
make [-j n] && make install
où ''[-j 4]'' est le nombre de pc qui vont servir à la compilation si un cluster est installé via ''icecream'' par exemple.