Comprendre le fonctionnement "moteur" de wapt

De WIKI Les fourmis du libre
Aller à : navigation, rechercher

Waptlogo.jpg

Cette documenation est maintenant caduc !

Je travail maintenant pour tranquil.it et j'ai écrit une nouvelle documentation beaucoup plus complète ici :

http://wapt.fr/fr/doc


Docwapt.jpg




Moteur.jpg

Comprendre Wapt

On va ici essayer de comprendre comment fonctionne wapt.

Il faut savoir qu'a la base, wapt fonctionnais sans console. Ici nous allons donc très peux parler de la console.


Structure des paquets WAPT

Un fichier Wapt est une archive, on peut donc facilement la de-zipper pour voir son contenue


Fichier setup.py

C'est le fichier de l'installation. Il contient les instructions qui doivent être exécutée par wapt: Un script pyton

Fichier WAPT\manifest.sha1

Il contient l'empreinte sha1 de chaque fichier du package

Fichier WAPT\signature

Contient la signature du fichier manifest.sha1

A l'installation du paquet, wapt-get vérifie

- que la signature du manifest.sha1 correspond bien au fichier manifest.sha1 actuel (utilisation correspondante a l'un des certificat public présent dans c:\wapt\ssl\ )

- que l'empreinte sha1 de chaque fichier est identique à celle contenue dans le fichier manifest.sha1

Fichier WAPT\control

Il est dans le dossier Wapt de l'archive. C'est un peu ici que ça se passe.

Il contient les informations d'identification du paquet

Exemple du contenu:

 package      : smp-freemind
 version      : 1.0.1-0
 architecture : all
 section      : base
 priority     : optional
 maintainer   : SMP <blog@lesfourmisduweb.org>
 description  : FreeMind permet de créer des cartes heuristiques ou carte des idées
 depends      : smp-java
 conflicts    : 
 sources      : http://freemind.sourceforge.net/

- "Package" définie le nom du paquet (lors de mise a jour d'un logiciel il ne doit pas être modifiée)

- "Version" définie la version du logiciel. Attention la version indiqué après le - est la sous version elle permet de mettre a jour le paquet (pour forcer une réinstallation) sans modifier la version réel du paquet.

- "architecture" Permet de définir pour quelle architecture est prévu le paquet. N'est pas fonctionnel (pas utilisé) pour le moment

- "section" base : Paquet logiciel , group : Paquet groupe , host : Paquet machine , restricted : restreinte

- "priority" optional N'est pas fonctionnel (pas utilisé) pour le moment

- "maintainer" définie par qui est maintenue ou a été crée le paquet

- "description" Fournis une description du logiciel et du paquet

- "depends" En faite tout wapt fonctionne autour de ce paramètre. Il définis les paquet wapt qui doivent être installé si ce paquet wapt est installé. Par exemple freemind a besoin de java pour fonctionner dans depends nous allons donc retrouver smp-java.

- "conflicts" est complètement l’inverse de depends. Il définis les paquet wapt qui doivent être désinstallé si ce paquet wapt est installé. Il faut Evidemment que le logiciel indiquée ici est été installée avec wapt

- "sources" Peut définir où est trouvable le logiciel (un lien)

Allure du nom du paquet après build

smp-freemind_1.0.1-0_all.wapt

On retrouve bien une partie de nos éléments dans le nom

Paquet machine

Comment le client wapt d'un pc sait t'il les paquets qu'il doit installer ?

Grace a un paquet wapt host .

Tapez par exemple : http://ipdevotrewapt/wapt-host/nomdevotrepostefqdn.wapt

Vous allez trouver un paquet par nom de pc. Pour moi par exemple:

info-simon.stemarie-aizenay.local.wapt

Si on télécharge ce paquet wapt et que l'on regarde a l'interieur, si je regarde dans le fichier control, dans la partie depends je vais retrouver les logiciels ou les groupes que j'ai demandée via la console. Ce sont exactement les mêmes que dans la console.

Si je regarde la partie conflicts, je vais retrouver ici les logiciels qui sont indiqué dans "forcer la désinstallation" dans la console.

Paquet groupe

Je vais pas expliquer je pense que vous commencer a comprendre le principe. Cela utilise dépends et confict

Liste des paquet du serveur

Pour connaitre la liste des paquets (logiciel) disponible, le client wapt, la console Utilise le fichier Packages

Vous pouvez télécharger le fichier Packages ici: http://ipdevotrewapt/wapt/Packages

une fois dézipper, vous trouvez dans ce fichier ziper package, un fichier package, vous pouvez l'ouvrir avec un editeur text

Vous y trouverez quelque chose comme ceci :

package      : aiz-adobereader
version      : 15.7.20033-17
architecture : all
section      : base
priority     : optional
maintainer   : blog@lesfourmisduweb.org
description  : Lecteur PDF Adobe Reader dc for windows 7 and other for xp
depends      :
conflicts    :
sources      : ftp://ftp.adobe.com/pub/adobe/reader/win
localpath    : /var/www/wapt
filename     : aiz-adobereader_15.7.20033-17_all.wapt
size         : 136718386
repo_url     : file:////var/www/wapt
md5sum       : 22e716eec49c9f6b30eb760534e9ba07
repo         : waptlocal

package      : aiz-paint.net
version      : 4.0.5-3
architecture : all
section      : base
priority     : optional
maintainer   : Simon Fonteneau
description  : automatic package for Paint.NET Setup
depends      : aiz-dotnetfx4.5
conflicts    :
sources      :
localpath    : /var/www/wapt
filename     : aiz-paint.net_4.0.5-3_all.wapt
size         : 17718565
repo_url     : file:////var/www/wapt
md5sum       : 6d999c0cd49e56f44e3f10db28522c0c
repo         : waptlocal

etc ... etc

C'est pour cela qu'il ne suffit pas de copier un ficher directement dans /var/www/wapt/

Pour qu'il apparaisse.

Il vous faudra lancer un script qui va régénérer ule fichier packages

sous linux : /usr/bin/python /opt/wapt/wapt-scanpackages.py /var/www/wapt/

vous remarquez que le fichier packages contient pour chaque paquet un champ md5sum, ainsi le client wapt final pourra vérifier l’intégrité du paquet wapt après téléchargement.

Vous retrouverez également le fichier package pour les hosts http://ipdevotrewapt/wapt-host/Packages

Vous n'avez pas besoin d’exécuter ce script lorsque vous utilisez wapt-get build-upload ou les projet pyscripter

Utilisation de wapt - Service ou ligne de commande

Lorsque que vous faite un wapt-get upgrade sur la machine, toute les commandes vont être exécuter avec la session avec laquelle la commande a été lancée.

Lorsque vous faite une demande de mise a jour via le wapttray, l'interface web (self service), ou via la console? C'est le service wapt qui est installer sur la machine qui sera utilisée. Et les commandes seront lancée avec un compte SYSTEM

Si vous souhaitez utiliser wapt uniquement en ligne de commande (sans le waptservice) c'est possible, vous pouvez créer un script a l'extinction qui va faire ceci:

wapt-get update
wapt-get upgrade
exit

Les script d'extinction ordinateur se lance en compte system (avec tous les droits)

Premier paquet du client wapt

Si use_hostpackages=1 dans c:\wapt\wapt-get.ini :

Le premier paquet que le client voudra installer c'est son paquet machine:

http://ipdevotrewapt/wapt-host/nomdupcclient.wapt

Ce paquet comporte une version et des dépendances.

A chaque ajout de logiciel ou suppression (depuis la console par exemple), ce paquet sera modifier pour modifier le fichier control, et la version du paquet sera impérativement incrémentée pour indiquer une modification des consignes.

Client - upgrade des paquet

Que se passe t'il lors d'un upgrade des logiciels via wapt.

Le client wapt télécharge le fichier packages pour savoir l'état des paquet et version dispo sur le dépôt

Wapt vérifie tous les paquets wapt déjà installée sur la machine (notamment les paquet machine et groupe)

Si une version plus récente du paquet est disponible sur l'un de dépôt renseignée, il téléchargera le paquet dans c:\wapt\cache puis les extraira dans un dossier temporaire, il lira ce qui a été indiqué dans le fichier control du paquet et regardera les dépendances nécessaire au paquet, il les installera puis lancera l'installation contenu dans le setup.py.

Voici l'importance de bien comprendre les dépendances !