Groupe d'utilisateurs de Logiciels Libres de Toulouse
Promouvoir, développer et démocratiser les Logiciels Libres en Midi-Pyrénées

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 :

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).
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.
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.