# WAPT - Guide des bonnes pratiques dans l'utilisation du service mutualisé RESINFO

Gabriel Pierre André Moreau, Jérôme Colombet, David Paryl

► To cite this version:

Gabriel Pierre André Moreau, Jérôme Colombet, David Paryl. WAPT - Guide des bonnes pratiques dans l'utilisation du service mutualisé RESINFO. 2025. hal-05185114

HAL Id: hal-05185114

https://hal.science/hal-05185114v1

Preprint submitted on 24 Jul 2025

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_1.png" /></figure>
# WAPT - Guide des bonnes pratiques dans l'utilisation du service mutualisé
## RESINFO

RESINFO / Groupe de Travail WAPT

<figure><img src="image_2.png" /></figure>

Version évolutive

(compilé en juillet 2025)
# Sommaire

<table><tr><td>1 Liminaire</td><td>1</td></tr><tr><td>1.1 À propos du service mutualisé de paquet WAPT</td><td>1</td></tr><tr><td>1.2 Administrateurs</td><td>2</td></tr><tr><td>1.3 Auteurs</td><td>2</td></tr><tr><td>1.4 Copyright</td><td>2</td></tr><tr><td>2 Feuille de route de l'utilisateur</td><td>3</td></tr><tr><td>2.1 Rester connecté</td><td>3</td></tr><tr><td>2.2 Connexion au dépôt mutualisé</td><td>3</td></tr><tr><td>2.3 Intégration d'un paquet dans son service</td><td>3</td></tr><tr><td>2.4 Paramétrage d'un poste de travail</td><td>4</td></tr><tr><td>3 Feuille de route du développeur</td><td>5</td></tr><tr><td>3.1 Prérequis</td><td>5</td></tr><tr><td>3.2 Préparation du dépôt local</td><td>6</td></tr><tr><td>3.3 Mise à disposition du paquet</td><td>7</td></tr><tr><td>3.4 Nomenclature d'un paquet resinfo</td><td>9</td></tr><tr><td>3.5 Exemple avec le paquet resinfo-lammps</td><td>11</td></tr><tr><td>4 Feuille de route du mainteneur</td><td>13</td></tr><tr><td>4.1 Depuis le dépôt local git</td><td>13</td></tr><tr><td>5 Annexe : connexion au dépôt mutualisé WAPT RESINFO</td><td>17</td></tr><tr><td>5.1 Ajouter le dépôt mutualisé RESINFO</td><td>17</td></tr><tr><td>5.2 Importer un paquet resinfo-* dans votre console.</td><td>18</td></tr><tr><td>6 Annexe : connexion à la forge Gitlab du CC-IN2P3</td><td>21</td></tr><tr><td>6.1 Authentification Web</td><td>21</td></tr><tr><td>6.2 Authentification SSH</td><td>22</td></tr><tr><td>6.3 Agent SSH</td><td>23</td></tr><tr><td>7 Annexe : à propos de VSCode</td><td>25</td></tr><tr><td>7.1 Support de LFS (Large File System)</td><td>25</td></tr><tr><td>7.2 Perte des fonctions de débogage</td><td>25</td></tr><tr><td>8 Annexe : extraire le MSI depuis un fichier EXE</td><td>27</td></tr><tr><td>9 Épilogue : quelques références et autres liens</td><td>29</td></tr></table>
WAPT est un système de paquet permettant de déployer des logiciels sur différents systèmes d'exploitation. Il permet d'avoir son propre magasin et sa propre console d'administration. RESINFO dans le cadre du GT WAPT propose un magasin mutualisé restreint pour le moment aux seuls systèmes Microsoft Windows sous 64 bits Intel et AMD.

## 1.1 À propos du service mutualisé de paquet WAPT

Ceci est une documentation pour les **utilisateurs**, les **développeurs** et les **mainteneurs** du service mutualisé RESINFO WAPT. N'hésitez pas à participer, toute personne est la bienvenue. Un article très complet et encore d'actualité a été publié au **JRES 2022** à Marseille : « RESINFO propulse WAPT sur l'orbite ESR, la science en paquets ! ». Vous êtes convié à le lire pour comprendre la philosophie du projet avant de vous plonger dans cette documentation.

<figure><img src="image_3.png" /></figure>

Le groupe de travail WAPT est porté par la fédération des réseaux métiers d'Administrateurs Systèmes et Réseaux dans l'Enseignement et la Recherche (RESINFO). Elle fédère plus d'une dizaine de **réseaux régionaux**. N'oubliez pas de vous inscrire auprès du réseau le plus proche de votre unité. La fédération anime un certain nombre de **groupe de travail** ouvert à tous et héberge des **listes de diffusion**, dont la fameuse liste ASR réservée aux adresses de courriel institutionnel.

Resinfo.org

Les contributeurs (développeurs et mainteneurs) à ce service RESINFO doivent être tous inscrits sur la liste WAPT-DEV. Toute personne dans l'ESR (au sens large) utilisant ou souhaitant utiliser WAPT est invité à s'inscrire sur la liste de diffusion à vocation généraliste WAPT avec une adresse de courriel institutionnelle. C'est sur cette liste que les annonces importantes seront faites.

Le service WAPT est structuré en **thématique** afin de donner de l'autonomie et de la souplesse dans la gestion des paquets. Chaque thématique a normalement au moins deux **mainteneurs** qui fédèrent les **développeurs** et garantissent la bonne qualité des paquets mis à disposition. Des administrateurs gèrent la cohérence de l'ensemble. Toutes les thématiques sont ouvertes à tous dans la limite de votre temps disponible.

Une thématique qui n'a que des **utilisateurs** ne peut vivre dans le temps ! Il y a nécessité de **partager** vos **savoirs faire** pour mieux **mutualiser** et **vivre ensemble**.
## 1.2 Administrateurs

Les administrateurs de la plateforme mutualisée à cet instant sont :

- Gabriel MOREAU (LEGI, Grenoble)

- Jérôme COLOMBET (LCC, Toulouse)

Ce document n'explique pas comment administrer les plateformes (WAPT, Gitlab...). C'est l'objet d'un autre document à usage interne. En cas de question, vous pouvez interroger les administrateurs par chat ou en envoyant un courriel avec un sujet clair à wapt-comite(A)listes.resinfo.org.

Attention, les administrateurs ne sont pas des pompiers ni des machines à fabriquer des paquets. Chaque thématique doit avoir sa propre autonomie et sa propre animation au travers de ses développeurs et de ses mainteneurs.

## 1.3 Auteurs

Les participants à l'écriture de ce document ont été classés par ordre alphabétique des prénoms.

- David PARYL (LCC, Toulouse) / 2023-

- Gabriel MOREAU (LEGI, Grenoble) / 2022-

- Jérôme COLOMBET (LCC, Toulouse) / 2022-

## 1.4 Copyright

Copyright (C) 2022-2025 CNRS, France

L'ensemble des documents est sous licence libre à gauche d'auteur — CC by SA.

<figure><img src="image_4.png" /></figure>
L'utilisateur est la première brique dans le fonctionnement du service mutualisé WAPT RESINFO. Il s'agit de la personne qui utilise le dépôt de paquets pour alimenter son site, comme elle pourrait le faire avec le dépôt de la société *Tranquil IT*. En particulier, sa fonction principale est d'administrer les déploiements des logiciels sur son réseau local. Dans le cadre de cette documentation, elle est nommée «'utilisateur» du service.

Rappel : l'administrateur système et réseau dans une unité est autonome. C'est à lui que revient la charge et la responsabilité de savoir s'il faut ou non déployer telle ou telle version de logiciel sur son parc machine. Comme dans tout système de paquets, les vérifications de bon fonctionnement sont à faire en local. Les développeurs ne peuvent être lapidés par les utilisateurs pour des erreurs qui resteraient présentes !

## 2.1 Rester connecté

En tant qu'utilisateur du service, inscrivez-vous sur la liste de diffusion WAPT afin d'échanger autour de cette technologie de déploiement. Attention, il vous faudra absolument utiliser une adresse de courriel institutionnelle.

## 2.2 Connexion au dépôt mutualisé

Afin de connecter sa console d'administration au dépôt national, il faut suivre la démarche décrite dans l'annexe *connexion au dépôt mutualisé WAPT RESINFO* avant d'aller plus loin.

## 2.3 Intégration d'un paquet dans son service

L'utilisateur du service, lorsqu'il importe un paquet, doit le mettre dans un état : DEV, PREPROD ou PROD. Sauf cas exceptionnel, la voie normale est de le positionner sur DEV. Le paquet sera alors télédéployé ou mis à jour sur les seuls ordinateurs marqués en DEV.

Petit rappel sur les trois niveaux :

- le niveau DEV concerne les machines de test au service. En général il y en a peu et le gestionnaire de parc les utilise pour justement tester les paquets.
- le niveau `PREPROD` concerne un nombre limité de machines, par exemple 10% de votre parc. En déployant sur celui-ci, vous allez avoir des retours en cas de problème sans mettre votre unité à plat. Il est clair qu'il ne faut pas mettre les machines sensibles dans ce niveau.

- le niveau `PROD` englobe toutes les autres machines.

Une fois que le paquet est validé sur les machines de `DEV`, vous pouvez le basculer sur `PREPROD` dans votre console et attendre un peu avant de le positionner finalement sur `PROD`. Tout dépend de la gravité de la mise à jour. Les alertes du CERT, les courriels des RSSI et les annonces sur différents sites web de confiance permettent d'estimer l'urgence de la mise à jour de quelques heures à quelques jours.

## 2.4 Paramétrage d'un poste de travail

Le choix du niveau se réalise sur chaque poste de travail au niveau du fichier `wapt-get.ini` (`C:\Program Files(x86)\wapt\wapt-get.ini`). Par exemple, il faudrait avoir la ligne suivante sur une machine en `PREPROD`.

```
[global]
maturities = PROD, PREPROD
```

En pratique, dans votre parc d'ordinateurs sous Windows, les machines de `DEV` seront toujours un peu les mêmes et ainsi de suite... Les machines des utilisateurs «gentils» et/ou peu «sensibles aux bogues» seront probablement en `PREPROD`.
Les commandes et actions suivantes sont à faire sur la machine qui sert au développement et aux tests des paquets. Ceux qui souhaitent utiliser un autre IDE que VS Code peuvent tout à fait le faire et devront peut-être adapter les commandes et/ou procédures.

## 3.1 Prérequis

Voici quelques prérequis bien utiles à avoir sur son poste de travail avant de commencer :

- Une machine virtuelle (VM) Windows dans le domaine avec un accès internet.

- Un compte «Adminitrateur» pour se rapprocher du compte «System» utilisé lors de l'installation par WAPT.

- Un compte utilisateur pour la connexion SSH au serveur Git.

- Installer l'agent WAPT.

- Créer le raccourci de la console WAPT (C:\Program Files (x86)\wapt\waptconsole.exe) dans la barre des taches.

- Paramétrer la console WAPT (création préfixe, certificat personnel, éditeur...).

- Configurer les dépôts.

- La VM remonte dans la console WAPT de prod, on peut y installer les logiciels de base resinfo-waptdev-tools, resinfo-firefox, resinfo-iconextract, resinfo-image-resizer qui nous servirons pour le développement et l'édition de paquets.

- Choisir un paquet, puis clic droit dessus, puis éditer le paquet dans l'éditeur pour installer les extensions qui manquent dans VS Code notamment celle concernant python et python-debug.

- Installer l'application Git depuis Git SCM ou GitForWindows (ce sont les mêmes). L'extension Git-LFS (Large File System) doit être active sur votre poste. Elle est nécessaire pour enregistrer de manière performante les gros fichiers binaires sur le dépôt Git.

- Création des accès à la forge Gitlab du CC-IN2P3.

- Générer ses clefs SSH afin de pouvoir accéder au Gitlab en utilisant au minimum une clef RSA de 4096 bits (ssh-keygen -t rsa -b 4096).

- Création et initialisation de son dépôt local GT-WAPT, différent de son dossier de test des paquets pour sa propre infrastructure.

- Configuration de Git (git config, git config --global, .gitignore, .gitattributes...). Lors du git clone de la ou des thématiques qui vous intéressent, des fichiers .gitignore et .gitattributes (LFS / Large File System) préconfigurés par les administrateurs seront installés dans le repository.
## 3.2 Préparation du dépôt local

### 3.2.1 Première utilisation d'une thématique

Lors de la première utilisation, il va falloir cloner le dépôt avec la commande `git clone`.

Attention, il faut au préalable avoir un compte sur le Gitlab de l'IN2P3 (utiliser l'auto-identification eduGAIN) et demander un accès en écriture au dépôt WAPT (par clef SSH de préférence). Votre clef SSH doit être une clef **RSA de 4096 bits** ou une clef **Ed25519**. La partie privée **doit être protégée** par une **passphrase**. C'est la partie publique que vous copiez sur la forge Gitlab de l'IN2P3.

Création et initialisation du dépôt local :

```bash
$ mkdir GT-WAPT
$ cd GT-WAPT
$ git clone git@gitlab.in2p3.fr:resinfo-gt/wapt/contrib/<thematique>.git
$ # Pour le seul projet
$ git config user.name "Prenom Nom"
$ git config user.email "son@courriel.fr"

$ # Global pour tous les projets
$ git config --global user.name "Prenom Nom"
$ git config --global user.email "son@courriel.fr"

$ cd <thematique>/
```

### 3.2.2 Utilisation courante

Vous avez déjà un dépôt fonctionnel (le `git clone` a déjà été effectué) concernant par exemple la thématique `chemistry`. Il faudra donc se synchroniser (mettre à jour) avec le dépôt RESINFO. Celez s'effectue avec la commande `git pull`.

- Se rendre dans son dépôt (dossier) local `git`.

```bash
$ cd GT-WAPT/chemistry
```

- Vous vous positionnez dans la branche `dev`.

```bash
$ git checkout dev
```

- Vous listez les branches et vous vérifiez bien que vous êtes dans la branche `dev`, l'étoile vous indique votre position.

```bash
$ git branch
```
- Le dépôt local est mis à jour (synchronisé avec le dépôt distant).

```
$ git pull
```

- Toujours bien penser à visualiser le contenu du dépôt local avant de se lancer dans des modifications ou ajouts.

```
$ ls
```

## 3.3 Mise à disposition du paquet

Lorsque le paquet est fonctionnel et qu'il a été modifié selon la nomenclature du GT (cf. Nomenclature d'un paquet `resinfo-wapt`), vous pouvez copier le dossier de son paquet local vers son dépôt local git thématique.

Par exemple :

- sous GNU/Linux :

```
$ rsync -av --stats --progress waptdev/resinfo-lammps GT-WAPT/chemistry /
```

- sous Microsoft Windows : copier-coller du dossier `waptdev/resinfo-lammps` dans `GT-WAPT/chemistry/`

Vous allez pouvoir pousser son paquet sur la forge git `chemistry/dev` de RESINFO.

- Bien remettre à jour son dépôt local au cas où il y ait eu des modifications d'autres contributeurs sur le dépôt national dans l'intervalle. Cette situation arrive régulièrement lors des jours de fortes activités !

```
$ git pull
```

- Le nouveau dossier est intégré.

```
$ git add resinfo-lammps/
```

- Le commit (validation) est effectué.

```
$ git commit -m "Ajout du paquet lammps"
```

- Le paquet est alors poussé sur la branche `dev` du dépôt RESINFO national.

```
$ git push
```

Si tout c'est bien passé, les mainteneurs de la thématique reçoivent un mail pour les informer qu'un nouveau paquet est prêt à être examiné. Vous pouvez cependant leur
envoyer un courriel (ou un message dans le chat) sympathique leur demandant de valider votre travail.

- Une fois le paquet validé par le mainteneur (en fonction de sa charge de travail), il sera automatiquement construit et poussé dans le dépôt wapt-resinfo, une fois par heure, de 7h du matin à 20h le soir, tous les jours ouvrés de la semaine du lundi au vendredi.

- Le nouveau paquet WAPT est alors disponible depuis votre console WAPT locale en sélectionnant le dépôt wapt-resinfo dans l'onglet «Dépôt privé» puis «importer un paquet» et «importer depuis internet».

<figure><img src="image_5.png" /><figcaption>Fig. 1 - Console WAPT : dépôt RESINFO</figcaption></figure>

- Pour rappel, pour ajouter un dépôt dans votre console WAPT locale, dans la fenêtre «importer des paquets» cliquer sur «paramètres des dépôts» pour obtenir la fenêtre ci-dessous. Validé par «inscrire un nouveau dépôt» ou «OK»
<figure><img src="image_6.png" /><figcaption>Fig. 2 - Console WAPT : paramètres du dépôt RESINFO</figcaption></figure>

- Pour la gestion des fichiers à ne pas pousser, pensez à utiliser et paramétrer le fichier `.gitignore`, par exemple comme ci-dessous :

```
.DS_Store
.AppleDouble
.*
__pycache__
.env
.vscode
*.bak
*.bak
certificate.crt
manifest.sha256
signature sha256
*_x64_DEV.wapt
```

Il y a normalement à la racine de chaque thématique un fichier `.gitignore` suffisamment générique pour ne pas être dangereux pour tous les logiciels. Vous pouvez en créer un dans le dossier de votre paquet pour le compléter avec des fichiers spécifiques à ce logiciel.

## 3.4 Nomenclature d'un paquet resinfo

Il peut-être utile de consulter au préalable les pages web concernant la **structure d'un paquet** afin de bien comprendre la signification de chaque champ.

Le paquet doit obligatoirement être en architecture x64 (même si vous avez la version 32, merci d'alléger vos paquets).

Le dossier doit porter le même nom que le nom du paquet définit dans le fichier `control`, c'est à dire `resinfo-"nom-du-logiciel-en-minuscule"`, et il doit contenir :
- le fichier `setup.py`.

- les `exe`, `msi`... et les fichiers/dossiers nécessaires à l'installation du logiciel concerné.

- un fichier `README.md` (cf. exemple `ci-dessous`).

- un dossier `WAPT` contenant les fichiers suivant :

- `control` (cf. `ci-dessous`).

- `icon.png` (fichier icône du logiciel en 48x48 récupérée lors de l'installation de test avec le logiciel `iconextract` par exemple).

- `wapt.psproj` (fichier de WAPT).

Dans le fichier `control`, renseigner **a minima** les champs `ci-dessous`, et supprimer les informations dans les champs `signer`, `signer_fingerprint`, `signature`, `signature_date`. En effet, ces derniers seront automatiquement mis à jour lorsqu'il seront poussés sur le serveur WAPT.

```
package         : resinfo-lammps
version         : 20220623-1
architecture     : x64
section         : base
priority        : optional
name            : LAMMPS
categories      : chemistry
maintainer      : RESINFO <wapt-dev@listes.resinfo.org>
description     : Large-scale Atomic/Molecular Massively Parallel Simulator (
                 LAMMPS) is a classical molecular dynamics simulation code focusing on materials
                 modeling.
maturity        : DEV
target_os       : windows
sources         : https://github.com/lammps/lammps
description_fr  : LAMMPS est un code de simulation de dynamique moléculaire
classique axé sur la modélisation des matériaux.
licence         : GPLv2
homepage        : https://www.lammps.org/
....
signer          :
signer_fingerprint:
signature        :
signature_date   :
```

- Le champ `version` doit être de la forme `version_du_logiciel-version_dupaquet`. Par exemple, pour un logiciel de version `2.3.5` et une paquet de version `0 version : 2.3.5-0`.

- Le champ `categories` est à mettre en minuscule.

- Le champ `maturity` en majuscule avec la valeur `DEV` pour le moment.

- Le champ `name` première lettre en majuscule et la suite en fonction de la casse de l'éditeur. Ce paramètre apparaît dans le self-service avec l'icône associée au projet.

- Le champ `description` est plutôt en anglais et la traduction en français est dans `description_fr` (Le site `deepl` aide à faire des traductions, tout comme les pages multilingues de `wikipedia`).

- Vérifier que votre fichier de `control` est bien en UTF8 pour l'encodage des caractères européens.
## 3.5 Exemple avec le paquet resinfo-lammps

### 3.5.1 Fichier control

package : resinfo-lammps
version : 20220623-1
architecture : x64
section : base
priority : optional
name : LAMMPS
categories : chemistry
maintainer : RESINFO <wapt-dev@listes.resinfo.org>
description : Large-scale Atomic/Molecular Massively Parallel Simulator (LAMMPS) is a classical molecular dynamics simulation code focusing on materials modeling.
depends :
conflicts :
maturity : DEV
locale :
target_os : windows
min_wapt_version :
sources : https://github.com/lammps/lammps
installed_size :
impacted_process :
description_fr : LAMMPS est un code de simulation de dynamique moléculaire classique axé sur la modélisation des matériaux.
description_pl :
description_de :
description_es :
descriptionPt :
description_it :
description.nl :
description_ru :
audit_schedule :
editor :
keywords :
licence : GPLv2
homepage : https://www.lammps.org/
package_uuid :
valid_from :
valid_until :
forced_install_on :
changelog :
min_os_version :
max_os_version :
icon_sha256sum :
signer :
signer_fingerprint:
signature :
signature_date :
signed_attributes :
### 3.5.2 Fichier README.md

- Les dates dans le fichier README.md doivent être au format : YYYY-0M-0D, avec les mois et les jours sur deux chiffres (Mars -> 03).

```ini
# LAMMPS - classical molecular dynamics simulation code focusing on materials modeling
```

Large-scale Atomic/Molecular Massively Parallel Simulator (LAMMPS) is a classical molecular dynamics simulation code focusing on materials modeling. It can model atomic, polymeric, biological, solid-state (metals, ceramics, oxides), granular, coarse-grained, or macroscopic systems using a variety of interatomic potentials (force fields) and boundary conditions. It can model 2d or 3d systems with sizes ranging from only a few particles up to billions

source: https://github.com/lammps/lammps

maintainer: wapt-dev@listes.resinfo.org

- from: date_de_prise_en Charge_duPAquet mail_duDéveloppeur
  (ajout d'une nouvelle ligne à chaque changement pour garder l'historique)

- from: 2023-05-30 david.paryl@lcc-toulouse.fr

licence: GPLv2

date: 2023-05-30
# Feuille de route du mainteneur

Votre mission

- En tant que mainteneur, vous recevez un mail vous informant d'un nouveau paquet à examiner dans votre thématique

- Avant la validation de ce dernier, vous devez vous assurer de son fonctionnement en le récupérant et l'installant sur votre machine de développement en local

- En tant que mainteneur, vous êtes garant de son passage dans la branche **master**

Attention à la gestion des dépôts si vous êtes à la fois développeur et mainteneur. Vous ne devez jamais développer dans la branche **master**, mais toujours dans la branche **dev**!

Dans les exemples suivants, l'écriture des commandes prend appui sur la thématique **chemistry** et le paquet **resinfo-lammps**. Il faudra à chaque fois vous adapter à la bonne thématique et au bon paquet.

## 4.1 Depuis le dépôt local git

```
$ cd GT-WAPT/chemistry
```

Vous devez vous positionner dans la branche **dev** et bien vérifier que vous êtes sur cette branche. Vous pouvez lister les branches via **git branch**, l'étoile vous indique votre position.

```
$ git checkout dev
$ git branch
```

Bien penser à mettre à jour votre dépôt local

```
$ git pull
```

Visualisez le contenu du dépôt local, il est probable qu'un nouveau dossier concernant un nouveau paquet apparaisse. En cas de modification sur un paquet existant, vous devrez aller regarder dans ce sous-dossier-là.
$ ls

**Important** : examinez le paquet (fichiers, respect de la nomenclature, architecture x64 unique-ment,...) et essayez de l'installer sur votre machine Windows locale de développement. Vous devez toujours prendre le temps et éviter de pousser dans l'urgence, car le dépôt national sera ensuite utilisé par toute la communauté.

Une fois que vous considérez que le paquet est fonctionnel et apte au déploiement, vous pouvez le basculer de la branche `dev` à `master`. En général, surtout au début, c'est un choix qui se fait collectivement parmi les mainteneurs de la thématique. Attention, **seul le dossier correspondant à un paquet est validé** à la fois, c'est le rôle de la commande `git checkout dev resinfo-lammps` pour le paquet `resinfo-lammps`. Il ne faut surtout pas valider toute la branche `dev` sur `master` d'un coup !

```
$ git checkout master
```

```
$ git checkout dev resinfo-lammps
```

```
$ ls
```

```
$ git branch # voir qu'on est bien dans master
```

```
$ git commit -m "Add package lammps from dev branch"
```

```
$ git push
```

- Suite aux actions précédentes, le paquet est disponible sur la branche `master` du dépôt `git` national.

- Il sera automatiquement construit et poussé dans le dépôt `wapt-resinfo`, une fois par heure, de 7h du matin à 20h le soir, tous les jours ouvrés de la semaine du lundi au vendredi.

- Le nouveau paquet WAPT est disponible depuis votre console WAPT locale en sélectionnant le dépôt `wapt-resinfo` dans l'onglet «Dépôt privé» puis «importer un paquet» et «importer depuis internet».

<figure><img src="image_7.png" /><figcaption>Fig. 1 - Console WAPT : dépôt RESINFO</figcaption></figure>
- Pour rappel, pour ajouter un dépôt dans votre console WAPT locale, aller dans la fenêtre «importer des paquets» cliquer sur «paramètres des dépôts» pour obtenir la fenêtre si dessous. Validé par «inscrire un nouveau dépôt» ou «OK»

<figure><img src="image_8.png" /><figcaption>Fig. 2 - Console WAPT : paramètres du dépôt RESINFO</figcaption></figure>
# Annexe : connexion au dépôt mutualisé WAPT RESINFO

## 5.1 Ajouter le dépôt mutualisé RESINFO

L'accès au service est restreint sur le serveur à des adresses IP RENATER (institutionnelles). Vous devez donner les adresses IP de vos consoles aux administrateurs du service mutualisé. Envoyez un courriel avec un sujet clair à wapt-comite(A)listes.resinfo.org (exemple : «Accès au dépôt RESINFO WAPT / VOTRE SITE») qui explicite simplement dans le corps du texte votre ou vos adresses IP de console sur une ou plusieurs lignes en utilisant le format :

```
IP1/32 # 2023-09-26 / Unité / Ville : NOM-DE-FAMILLE Prénom <adresse@courriel>
IP2/32 # 2023-09-26 / Unité / Ville : NOM-DE-FAMILLE Prénom <adresse@courriel>
...
```

Vous pouvez vérifier auparavant l'adresse IP de votre (vos) console sur internet avec le service en ligne whatismyip. En effet, avec la pénurie, de nombreux sites sont derrière une adresse de nat.

Pour ajouter ensuite un dépôt dans votre console WAPT locale, dans la fenêtre «importer des paquets» cliquer sur «paramètres des dépôts» pour obtenir la fenêtre ci-dessous. Validez par «inscrire un nouveau dépôt» ou «OK».
<figure><img src="image_9.png" /><figcaption>Fig. 1 - Console WAPT : paramètres du dépôt RESINFO</figcaption></figure>

Les deux paramètres importants sont :

Nom : wapt-resinfo
URL : https://wapt.resinfo.org/wapt

Vous pouvez essayer d'aller avec votre navigateur à la racine du site web du dépôt. Vous devriez vous prendre le message 403 Forbidden qui indique que votre console accède bien au serveur web. En effet, le frontal d'accueil n'est autorisé à personne afin de ne pas être tenté de télécharger le client RESINFO (qui ne vous servirait à rien). L'accès aux paquets devrait cependant fonctionner.

## 5.2 Importer un paquet resinfo-* dans votre console.

Lorsqu'un nouveau paquet WAPT est disponible, vous pouvez l'importer depuis votre console WAPT locale en sélectionnant le dépôt wapt-resinfo dans l'onglet «Dépôt privé», puis «importer un paquet» et enfin «importer depuis internet».
<figure><img src="image_10.png" /><figcaption>Fig. 2 - Console WAPT : dépôt RESINFO</figcaption></figure>

À noter qu'une fois importé chez vous, le préfixe **resinfo-** dans le nom du paquet sera remplacé par le votre, de la même manière que pour le préfixe **tis-** utilisé par *Tranquil IT*.

Voir la **feuille de route de l'utilisateur** pour en savoir plus sur comment utiliser les paquets sur votre parc informatique.
# Annexe : connexion à la forge Gitlab du CC-IN2P3

Pensez au préalable à toute démarche à bien être inscrit sur la liste de diffusion WAPT-DEV.

## 6.1 Authentification Web

Vous devez essayer de vous connecter sur la forge sous le dossier **contrib**. Lors du processus d'authentification, vous allez utiliser la fonctionalité «Single Sign-On», puis l'authentification via «eduGAIN». Tant que vous ne serez pas authentifié au moins une fois sur la forge, personne ne pourra pas vraiment vous donner des droits sur une thématique. Ce processus est donc préliminaire à toute démarche.

<figure><img src="image_11.png" /></figure>

Une fois que votre compte est actif sur la forge, vous pouvez demander aux administrateurs ou aux mainteneurs de vous rattacher à une thématique. Ceux-ci vous donneront le rôle de **Déve-loppeur** pour commencer (un jour peut-être vous serez **Mainteneur**, voir **Administrateur**). Vous devez si possible faire afficher votre nom de la forme :

NOM-DE-FAMILLE Prénom [RATTACHEMENT]
MOREAU Gabriel [LEGI]

C'est important pour vous retrouver facilement. Il y a en effet des milliers de personnes sur cette forge avec de nombreux homonymes (souvent la même personne qui a changé d'unité d'affectation).
Une fois que vous aurez été ajouté dans une ou plusieurs thématiques, vous aurez alors accès au dépôt Git en mode web (navigateur ou en ligne de commande via des URL en HTTPS). Exemple avec la thématique *chemistry* :

- interface web de la thématique : https://gitlab.in2p3.fr/resinfo-gt/wapt/contrib/chemistry;

- cloner le dépôt git en mode HTTPS :

```
$ git clone https://gitlab.in2p3.fr/resinfo-gt/wapt/contrib/chemistry.git
```

L'utilisation du protocole HTTPS en ligne de commande avec Git n'est pas très pratique (il y a souvent à remettre son mot de passe) et par ailleurs lente. On a tendance à fonctionner avec une clef SSH.

## 6.2 Authentification SSH

Le protocole SSH utilise comme HTTPS une poignée de main asymétrique pour le chiffrement avant de basculer sur des algorithmes de chiffrement symétrique plus efficace dans une session. Vous devez donc générer une paire de clefs (privée et publique). À l'heure actuelle, soit vous avez une clef **RSA de 4096 bits**, soit une clef **Ed25519**. Si votre clef d'usage est différente, c'est mieux d'en refaire une qui vérifie ces critères (il existe d'autres clefs qui sont bien si vous maîtrisez votre sujet).

```
$ ssh-keygen -t rsa -b 4096
$ ssh-keygen -t ed25519
```

Une **passphrase** vous sera demandée. Il est **interdit** de mettre une passphrase **vide** avec un compte utilisateur (trous de sécurité trop important). À la différence d'un mot de passe, une passphrase peut contenir des espaces. Il est bien que votre passphrase contienne au moins **20 touches à taper** (lettre, chiffre, symboles...), si plus c'est encore mieux !

Votre clef publique est enregistrée dans un fichier avec l'extension `.pub` dans votre dossier `~/ .ssh/` (Linux) avec le nom `id_rsa.pub` ou `id_ed25519.pub` par défaut. Ce fichier ne contient qu'une seule ligne. Attention à ne pas confondre avec le fichier de la clef privée qui contient par exemple la chaîne `-----BEGIN RSA PRIVATE KEY-----`.

Vous devez recopier votre clef publique dans la forge avant de pouvoir utiliser Git en mode SSH. Pour ce faire, éditez votre profil et allez dans l'onglet « SSH Keys ». Vous pouvez ajouter autant de clefs que vous voulez (et dont vous maîtrisez la passphrase).

Une fois cette étape validée, il est possible de récupérer le dépôt Git en mode SSH de la thématique *chemistry* :

```
$ git clone git@gitlab.in2p3.fr:resinfo-gt/wapt/contrib/chemistry.git
```

La passphrase vous sera demandée à chaque commande Git (en effet, Git a besoin d'accéder à la clef privée pour sa poignée de main lors du chiffrement). C'est vite pénible...
## 6.3 Agent SSH

Afin de ne mettre sa passphrase qu'une seule fois par session, il est conseillé d'utiliser l'agent SSH pour avoir la clef privée disponible en mémoire à tout moment. C'est le rôle de l'agent que de sécuriser ce stockage en mémoire vive. La clef est donc chargée par l'agent via la commande :

```
$ ssh-add ~/.ssh/id_rsa # RSA
```

```
$ ssh-add ~/.ssh/id_ed25519 # Ed25519
```

Si votre session est bien configurée, lors de chaque action, Git interroge l'agent SSH qui lui fournit la clef privée à utiliser. C'est simple et presque magique !

Attention à **verrouiller votre session** lorsque vous quittez votre bureau !
# Annexe : à propos de VSCode

Visual Studio Code est un éditeur de code extensible développé par Microsoft pour Windows, GNU/Linux et macOS. Les fonctionnalités incluent la prise en charge du débogage, la mise en évidence de la syntaxe, la complétion du code et Git intégré.

## 7.1 Support de LFS (Large File System)

Voici les quelques étapes à suivre pour activer la fonctionnalité LFS de Git dans VSCode.

1. Cloner le repository de la forge de l'IN2P3 correspondant à votre thématique.

2. Mettre celui-ci dans le dossier voulu.

3. Ouvrir un terminal de type `bash git`.

4. Taper la commande `git lfs track` pour vérifier que vous avez bien `git-lfs` sur votre système de développement.

— Si la réponse est `listing tracked patterns` avec une liste d'extension, c'est que LFS est opérationnel sur votre installation.

— Sinon, vous devez faire la commande `git lfs install` et refaire la commande de vérification.

## 7.2 Perte des fonctions de débogage

Lorsque vous ouvrez le dossier d'un paquet pour le valider sur votre machine de développement, il manque à l'intérieur le dossier `.vscode` contenant les paramétrages pour activer les fonctions de débogage (`debug`). Soit vous en récupérer un dans un paquet de votre store, soit vous pouvez télécharger l'archive `zip` de configuration et la décompacter (extraire) dans le dossier situé à la racine du paquet. Vous aurez alors un dossier `.vscode` à cette racine.

— Archive au format zip de configuration de VSCode : `vscode-settings.zip`.
Annexe : extraire le MSI depuis un fichier EXE

Il est parfois (souvent) préférable d'installer un MSI plutôt qu'un EXE. De nombreux installateurs EXE ne sont en réalité que des archives contenant le MSI à installer. Cette annexe, issue du site web CodeTwo, explique comment extraire le MSI d'un EXE. La dernière étape consiste à déployer cet MSI, avec les techniques classiques pour déployer silencieusement des MSI.

Il y a au moins trois façons de résoudre ce problème, mais aucune d'entre elles n'est universelle. Vous pourriez avoir besoin de toutes les passer en revue pour trouver celle qui fonctionne pour l'installateur EXE que vous avez.

La première méthode est basée sur le fait que la plupart des installateurs extraient leurs fichiers .msi dans le dossier de fichiers temporaire pendant le processus d'installation. Pour extraire un fichier MSI d'un installateur EXE, vous devez :

**La première méthode** est basée sur le fait que la plupart des installateurs extraient leurs fichiers .msi dans le dossier de fichiers temporaire pendant le processus d'installation. Pour extraire un fichier MSI d'un installateur EXE, vous devez :

1. Lancez votre fichier .exe.

2. Lorsque vous voyez la première demande (par exemple, une question pour savoir si vous souhaitez continuer à installer le logiciel, accepter un accord de licence, etc.), **ne cliquez sur rien dans cette fenêtre et ne la fermez pas.**

3. Ouvrez l'Explorateur Windows, tapez %Temp% dans la barre d'adresses et appuyez sur **En-ter**.

4. Trier les fichiers dans le dossier par la date de modification. Le fichier le plus récent de la liste doit être le fichier .msi que vous cherchez.

5. Copiez ce fichier MSI dans un emplacement sûr avant de fermer la fenêtre d' invite d'installation (voir étape 2). Sachez que si vous fermez la fenêtre d'installation, le fichier MSI sera immédiatement supprimé du dossier temporaire.

**La deuxième méthode** utilise un outil tiers libre appelé **7-Zip** pour parcourir le contenu du fichier d'installation .exe. Suivez les étapes ci-dessous.

1. Téléchargez 7-Zip et installez-le.

2. Cliquez avec le bouton droit de la souris sur le fichier .exe (à partir duquel vous souhaitez extraire un fichier .msi) et dans le menu deroulant, choisissez **7-Zip** et **Ouvrir Archive**.

3. N'extrayez pas encore de fichiers. Au lieu de cela, parcourez et recherchez le dossier MSI dans les différents dossiers. Cela peut prendre un certain temps pour trouver ce dossier car il n'est pas toujours situé directement dans le répertoire racine (son emplacement peut varier en fonction de l'installateur).
4. Lorsque vous localisez le dossier MSI, vous remarquerez qu'il ne contient probablement pas de fichiers `.msi`, mais un fichier ou des fichiers sans extensions et plutôt des noms énigmatiques tels que **132**. Malgré ces noms trompeurs, **ce sont en fait les fichiers MSI que vous cherchez**.

5. Faites glisser et déposez ces fichiers dans n'importe quel dossier souhaité ou sélectionnez-les et extrayez-les avec 7-Zip. Fermez 7-Zip après.

6. Changez les noms des fichiers extraits pour qu'ils incluent l'extension `.msi`.

7. S'il y a deux fichiers, le plus gourmand en espace disque est l'installateur 64 bits, et le plus petit est la version 32 bits. Utilisez celui dont vous avez besoin.

Si 7-Zip ne fonctionne pas pour vous, vous pouvez essayer un extracteur d'archives différent ou, en variante, utiliser la première ou la troisième méthode.

**La troisième méthode** fonctionne avec les projets basés sur InstallShield. Pour obtenir le fichier MSI de votre installateur EXE, vous devez :

1. Utiliser un ordinateur où le logiciel (correpondant à l'installateur auquel vous souhaitez accéder) **n'est pas installé**. En effet, cette méthode force le processus de désinstallation à déclencher l'extraction du fichier `.msi`. Si vous avez déjà installé ce logiciel, cette méthode le supprimera, ce qui pourrait ne pas être souhaité.

2. Exécuter **Windows Command Prompt (cmd)** (dans Windows 10 : ouvrez le menu **Dé-marrer**, tapez `cmd` et appuyez sur **Entrée**) et allez dans le dossier où se trouve votre fichier EXE.

3. Exécuter la commande `ci-dessous` :

```
setup.exe /s /x /b"dossier-destination" /v"/qn"
```

Remplacer le mot «setup.exe» par le nom de votre fichier `.exe` et «dossier-destination» par le chemin vers le dossier où vous souhaitez que le fichier `.msi` soit extrait (par exemple `C:\Temp`). Les interrupteurs de la commande `ci-dessus` font ce qui suit :

- `/s /x` - silencieusement (`/s`) désinstalle (`/x`) le produit du système;

- `/b` - définit le chemin cible pour le fichier `.msi`;

- `/v` - transmet les arguments souhaités à l'installateur. Dans ce cas, l'argument est `/qn`, il désactive l'interface utilisateur et toute question.
Épilogue : quelques références et autres liens

1. Ce guide des bonnes pratiques à usage des ASR de l'enseignement supérieur (et de la fonction publique) : https://resinfo-gt.pages.in2p3.fr/wapt/gt-wapt/docs (version PDF : https://resinfo-gt.pages.in2p3.fr/wapt/gt-wapt/docs/pdf/guide-resinfo-wapt.pdf)

2. Construire un paquet : https://www.wapt.fr/fr/doc/wapt-create-packages.html (version en anglais https://www.wapt.fr/en/doc/wapt-create-packages.html)

3. Structure d'un paquet : https://www.wapt.fr/fr/doc/wapt-package-structure.html (version en anglais https://www.wapt.fr/en/doc/wapt-package-structure.html)

4. Forge hébergeant les thématiques : https://gitlab.in2p3.fr/resinfo-gt/wapt/contrib (chaque thématique hébergeant ses paquets)

5. Site web de RESINFO : https://resinfo.org/

6. Site web du Groupe de Travail WAPT : https://resinfo.org/les-groupes-de-travail-11/groupe-de-travail-wapt/

7. Liste de diffusion de la communauté WAPT dans l'enseignement supérieur (et de la fonction publique) : https://listes.resinfo.org/wws/info/wapt

8. Liste de diffusion des mainteneurs et des développeurs du service WAPT mutualisé : https://listes.resinfo.org/wws/info/wapt-dev

9. Adresse courriel de contact des administrateurs du service WAPT mutualisé : wapt-comite(A)listes.resinfo.org

10. Article très complet dans les JRES 2022 (Marseille) sur le projet mutualisé « RESINFO propulse WAPT sur l'orbite ESR, la science en paquets ! » et comportant une belle revue bibliographique de WAPT dans l'Enseignement Supérieur et la Recherche (pdf, poster)

11. Tutoriel dans les JRES 2025 (Rennes) sur le projet mutualisé « Le dépôt de paquets WAPT RESINFO - De l'utilisateur local au développeur régional en passant par le mainteneur national » (pdf, vidéo)