Archives de catégorie : geekeries

Convivialité et logiciel libre deux ingrédients pour échapper aux enfers

En 2013, c’est Damien Chapoulart qui m’avait glissé le petit livre d’Ivan Illich dans le sac. On était dans le garage transformé en bureau du GDA Cru Banyuls, tous les deux accompagnés dans la découverte de la viticulture du cru par Eric Noémie. Damien m’avait dit « ça te parlera », avec un regard entendu.

Il avait tellement raison ! À l’époque on travaillait sur des questions de température et d’ensoleillement des zones viticoles sur GRASS-GIS. GRASS-GIS est un logiciel de traitement de données spatiales extrêmement puissant, mais connu pour la rugosité de l’interface.

La convivialité comme fermant du pharmakon

À la lecture de « La convivialité » (1973), j’avais été frappé par l’actualité de la pensée d’Illich. Il s’y oppose à la domination des institutions et des technologies sur la vie humaine et plaide pour des outils et des pratiques qui favorisent l’autonomie et les relations interpersonnelles. Un outil convivial est celui qui permet à l’utilisateur de réaliser ses intentions sans dépendre d’experts ou de structures hiérarchiques. Pour lui, la technologie doit donc rester au service des hommes, où les utilisateurs ont le contrôle et peuvent participer activement à la production et à l’entretien des outils. Il y décrit, le travailleur dans son atelier qui organise son espace en fonction de son vécu, et la dépossession de son lieu de travail quand l’ergonome impose une place aux outils pour lui faire gagner du temps.

Le lien avec le logiciel libre m’avait sauté aux yeux. Un code source ouvert, qui permet aux utilisateurs de pouvoir se saisir de l’outil ! Je l’avais proposé en ouverture du FOSS4G-fr en 2016, puis dans la préface de « Introduction à la géomatique » de Nicolas Roeland en 2019, commise avec mes complices Simon Georget et Didier Richard.

Malgré son image de logiciel jamais vraiment fini, réaliser par des hobistes, les logiciels libres ont, petit à petit, réussi a estompé cette image à l’exemple de GIS (une pensée émue pour GRASS et Qgis en 2010). Pourtant, cette austérité, nous dit Ivan Illich (1973) « n’a pas vertu d’isolation ou de clôture sur soi. Pour Aristote comme pour Thomas d’Aquin, elle est ce qui fonde l’amitié. […] Thomas d’Aquin définit l’austérité comme une vertu qui n’exclut pas tous les plaisirs, mais seulement ceux qui dégradent la relation personnelle ». L’austérité devient le moteur de la « société conviviale […] où l’outil moderne est au service de la personne intégrée à la collectivité, et non au service d’un corps de spécialistes. Conviviale est la société où l’homme contrôle l’outil. »

Survivre dans un monde dominé par Windows

En passant à Linux il y a plus de 10 ans pour des raisons politiques auxquelles Illich n’était pas étranger, j’avais expérimenté la difficulté d’exister dans un monde qui s’échange des fichiers de MSOffice.

On ne compte plus le nombre de situations embarrassantes dans lesquelles on se trouve quand on doit travailler sur un doc commun et que je fais sauter la mise en page parce que je l’ai ouvert avec OpenOffice ou libre Office.

Vous me direz c’est le temps que stabiliser un réseau de pratiques. Par exemple, quelle fluidité de travailler avec la Team OpenMole (ou le libre n’est pas une option). Pour les autres, on trouvait des astuces. Pour remplir les ordres de mission par exemple, j’avais monté une VM pour mon unité de recherche avec Windows installé dessus, pour permettre au non Windows de remplir ces tâches administratives.

La circulation se faisait, on bricolait des ponts. Comme tout bricolage, ça nécessite de monter en compétences techniques, ce qui peu à peu initie une forme d’hybridation. Une manière « d’être au monde » et de faire un monde qui n’est pas enfermé par la technique.

Et sont arrivés les LLM (Large Langage Model) et GPT (Generative Pre-trained Transformer). Là, toutes les frontières ont sauté aussi bien hardware que software ! Logitec a intégré des boutons sur ses claviers pour raccourcir l’accès à ChatGPT, des raccourcis sont aussi disponibles dans les extensions de Thunderbird … et Microsoft propose d’introduire l’IA dans sa prochaine mouture de Windows. Il y a un incontestable effet « wouahou » qui s’empare de tout le monde. Et des effets de bord (pour le moment) dont on identifie pour le moment mal les retombés.

IA Générative et environnement de travail

Sans le dire, sans en discuter collectivement, l’IA chamboule donc beaucoup de pratiques issues d’une co-évolution plutôt « longue » à l’échelle du numérique. On arrive à un point où il me semble que l’intégration de l’IA repose complètement des question de maitrise de nos environnements de travail et de nos vies.

C’est là que Günther Anders entre dans la danse. Dans « L’Obsolescence de l’homme », il utilise le concept de friction pour décrire la résistance qui empêche l’intégration parfaite des humains dans le monde technologique. En abordant la friction dans ce contexte, Günther Anders ne pointe pas simplement un problème technique, mais met en lumière une question philosophique et éthique profonde. Il avertit que sans aborder cette friction, l’humanité risque de devenir obsolète, incapable de maintenir le contrôle sur les technologies qu’elle a créées.

Un thème qu’on retrouvera dans « Rêve des machines » (trad. 2022 ed. Allia), il annonce p. 71 « il est maintenant bien clair,[…] que le principe dont je parle, à savoir la tendance à un expansionnisme sans limite et à un intégrationnisme total, est inhérent à la technique en tant que telle ; que ce principe ne gouverne pas uniquement les pays généralement regroupé tant bien que mal sous la dénomination d’État totalitaire. » La technique de par son expansion s’étend sans distinction politique. Et la vitesse de son extension joue aussi un rôle dans la friction et obsolescence. Alors que le monde s’accélère, l’Homme n’as pas le temps de s’hybrider.

Or c’est bien le propos d’Yvan Illich dans « la convivialité » tout l’enjeu est dans le choix, et la possibilité de conserver ce choix dans le temps. Un choix individuel, qui repose sur son propre consentement à l’hybridation avec l’IA, et un choix collectif, qui lui repose sur l’acceptation ou non de permettre un post-traitement des photos, des enregistrements audio, etc… parfois sans véritablement s’en rendre compte. Ce questionnement devient encore plus prégnant quand on considère l’éco-système privé et privateur de liberté qui est en train de se construire. Il y a donc comme avec le logiciel libre un enjeu à soutenir et accompagner le développement d’IA libre et suffisamment frugale pour tourner sur des machines personnelles.

Mon royaume pour une IA en localhost

Depuis la sortie en 2022 de chatGPT, les solutions basées sur des IA sont partout. La question n’est plus, il me semble : « comment vivre sans ? », ou encore « est-ce qu’il est souhaitable de mettre de l’IA partout ?  » une question qui ne nous a jamais été posée collectivement.

Xavier De La Porte résume très bien mon état d’esprit dans l’intro de son podcast (le code a changer : Série « Humains-machines : nos langues entremêlées » Épisode 1/2 : Une histoire d’interruption ) : « je crois que je n’en peux déjà plus des discussions autour de ce que nous racontent les IA. Je n’en peux déjà plus d’entendre des gens s’extasier de tout ce que savent les IA, ou, a contrario, se plaindre de leurs hallucinations. Je n’en peux plus des gens qui me détaillent ce qu’ils font avec GPT, Claude, Perplexity ou Le Chat. »

L’IA est là, elle étend son emprise, est-ce que je peux limiter ma zone de contact en gardant le « contrôle » sur ce que je donne à la machine ? Parce que la tentation est de plus en plus forte de donner aux promptes des papiers scientifiques, des rapports, etc. pour lui demander des résumés… Bien sûr qu’il faut les avoir lus pour espérer échapper aux hallucinations, mais le temps que je pourrais gagner à lui faire faire cet élagage est sans commune mesure. Ce qui me pose évidemment la question de gagner du temps pour faire quoi ? Et bien, pour le moment c’est la théorie de la reine rouge. Comme tout le monde utilise chatGPT, pour aller plus vite, je suis toujours à la traine.

Bien sûr, céder à ce chantage, c’est faire un pas de plus dans le rêve des machines de Günther Anders ! Nous devenons toujours plus consommateurs :

« si nous sommes considérés comme de meilleurs travailleurs, notre consommation sera d’autant plus satisfaisante et nous pourrons accomplir plus rapidement le devoir qui nous incombe d’œuvrer comme liquidateur ; les produits apparaissent d’autant plus réussis qu’ils sont capables de se laisser rapidement user par nous. » (G. Anders, 2022, p.85)

Couverture du livre de Günther Anders "Le Rêve des machines" aux éditions allia

Donc comment garder le contrôle ? En gardant l’IA dans sa boite — c’est à dire dans ma machine. Rien ne fuite car tout reste là en local sur mon ordinateur.

Techniquement comment j’ai fait ?

Installer Ollama c’est facile

Ollama c’est facile a installer sur Linux :

curl -fsSL https://ollama.com/install.sh | sh

Cet utilitaire fonctionne un peu comme docker. On fournit un nom de modèle et il se charge de le télécharger et de le faire fonctionner. Une fois l’utilitaire installé, il faudra donc télécharger des LLM. Il y en a une flopé disponible sur le site. À titre d’exemple, voilà celui que j’essaie en ce moment.

ollama run gpt-oss

Normalement en sortie de commande (après le téléchargement de plusieurs Go de modèle), vous tomberez dans un prompt dans le terminal. Pour en sortir ctrl + d.

Installer open-WebUI c’est moins évident

Avant tout, j’ai perdu pas mal de temps à essayer de comprendre pourquoi les modèles que j’avais téléchargés avec Ollama n’étaient pas visibles dans l’interface de open-WebUI. Il se trouve qu’il y a encore des incompatibilités entre open-WebUI et Firefox. J’ai fini par trouver les infos !

Donc, pour installer le service web, la solution proposée est basée sur docker. Chez moi, c’est passé avec cette commande :

sudo docker run -d --network=host -v open-webui:/app/openWebUI -e OLLAMA_BASE_URL=http://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main

Une fois que le docker est lancé, il met quelques minutes à s’instancier correctement. On peut accéder au service en local : http://localhost:8080/

RetEx à chaud 🪖

Après quelques essais, c’est chouette, mais ce n’est pas encore le futur! Déjà ça va pousser les « vieilles » machines dans la tombe et accentuer la fracture numérique. Ici une requête sur le modèle GPT-OSS occupe pas mal ma machine.

Je cherchais quelque chose qui me permette de faire de la synthèse de fichier. Le point positif c’est que c’est possible d’envoyer des fichiers au LLM dans l’interface d’open WebIU (qui intègre RAF), mais les formats ne sont pas tous supportés (PDF, odt, et autre format libre oui), mais les formats propriétaire comme docx semblent non pris en charge… Ensuite le niveau de réponse n’est pas foufou, et très dépendant du modèle qu’on charge. D’un point de vue contextuel, peut être que cela dépend des réglages de l’interface, mais la priorité n’est pas donnée au fichier que vous fournissez. Il arrive que se glissent des informations de fichier analysé précédemment.

Quelques références :

Institutional Gramar – un outils pour penser la gestions des ressources

Du 19 au 24 juin 2023, j’ai pu participer au congrès de l’IASC (International Association for the Study of the Commons) qui s’est déroulé à Nairobi. La thématique de la conférence était « the commons we want« , a donné lieu à une très grande diversité de panels en parallèle et donc a un programme riche et varié.

J’ai eu la chance, presque un peu par hasard, de participer au workshop, puis au panel sur l’Institutional Gramar (IG) proposé par Saba Siddiki, Christopher Frantz, et Ute Brady. Ce qui m’a permis une introduction rapide aux potentialités de la formalisation proposée.

Une synthèse de l’institutional Grammar

L’approche de la Grammaire institutionnelle (Institutional Grammar ou IG en anglais) est une approche définie conceptuellement par Crawford et Ostrom en 1995. Au fil des 25 dernières années, cette approche a été largement utilisée dans l’analyse des politiques, la modélisation informatique, etc.

l’IG appelée « Institutional Grammar 2.0 », actualise l’approche pour de nouvelles applications dans divers domaines de recherche. Cette version 2.0 offre une représentation plus précise et complète des informations institutionnelles, en mettant l’accent sur le sens, les fonctions et les effets des déclarations institutionnelles.

La formalisation des informations en passant par un encodage particulier et non ambigu (ou en tout cas moins ambigu que le langage naturel), indépendamment du domaine d’application et de la méthode analytique utilisée, ouvre des perspectives extrêmement intéressantes et déjà largement utilisées en termes d’analyse comparée et d’évolution temporelle des organisations. En soulignant l’importance de l’analyse institutionnelle, il me semble que l’IG est adaptable à diverses situations d’actions.

La formalisation proposée par l’IG 2.0 repose sur une grammaire générative décrite dans la table ci dessous par Watkins et Westphal (2016).

Tableau reprenant les composants de l’IG dans le papier de Watkins et Westphal (2016)

L’intérêt de l’Institutional Grammar réside pour moi dans le cadre d’analyse rigoureux qu’elle offre et qui donne des outils holistiques pour étudier le fonctionnement des institutions et des organisations. En utilisant cette approche, les chercheurs peuvent mieux comprendre comment les règles, les normes et les valeurs institutionnelles influencent les comportements et les décisions des acteurs impliqués.

Cette compréhension approfondie des structures institutionnelles et de leurs effets permet de proposer des solutions plus adaptées pour résoudre les problèmes et les défis auxquels sont confrontées les organisations. L’Institutional Grammar peut également aider à identifier les facteurs qui favorisent ou entravent l’efficacité des institutions, ce qui peut avoir des implications importantes pour l’amélioration des politiques publiques et des pratiques organisationnelles.

De retour dans la vraie vie, j’ai essayé de comprendre plus finement la méthodologie et les usages que je pouvais en faire. J’ai identifier deux cas d’usage au Sénégal : autour du lac de Guiers dans le cadre du projet Santés & Territoires, et dans la zone pastorale dans le cadre du projet Dundi Ferlo, et dans le cadre de la convention de programme sur les Communs.

Santés & Territoires : une approche co-construite de one Health

Le projet s’appuie sur une approche participative, impliquant les acteurs du système autour de la transition agro-écologique comme levier d’amélioration des santés (approche one Health). Des chercheurs et des acteurs locaux sont donc impliqués dans 4 pays : au Sénégal, au Bénin, au Laos et au Cambodge, au travers de dispositifs de recherche-action que peuvent être les livings lab. Au Sénégal, les livings-lab se positionnent autour du lac de Guiers (à Mbane, et Keur Momar Sarr).

Entre février et septembre 2023, Amandine Adamczewski-Hertzog et moi avons encadré Mathilde Hibon dans le cadre de son stage de fin d’études pour un double diplôme entre l’école d’agronomie de Purpan et l’ISARA (Norwegian University of Life Sciences, vous pouvez retrouver son rapport ici).

Mathilde put encoder tous ses entretiens avec l’IG. Cela lui a donné 150 entrées dans sa base. À partir de là, on a exploré ces entrées avec des outils de l’analyse de réseau (R, et gephi). En les exprimant par point de vue. C’est à dire, envisager la manière dont chacun considère les relations d’interaction (au travers de règles ou de stratégies). Voilà le résultat de l’une de ces analyses du point de vue des populations locales.

En regardant les relations qui sont identifiées à partir des entretiens mener auprès des institutions, on constate que la centralité des acteurs n’est pas du tout la même, ce qui permet entre autres choses de visualiser facilement les différences de points de vue.

La CP Commun

Dans le cadre de la CP Commun, l’équipe GIREL du GRET Sénégal a séléctionné deux terrain : Mont-Rolland et Diender pour y déployer le jeu f’eau diem. Le jeu f’eau diem étant utilisé comme une arène qui permet de virtualiser les problèmes auxquels les participants font face. On réutilise à notre compte le concept de Johan Huizinga (1949) : “The Magic Circle”. Cela renvoie à l’espace conceptuel (mental) et physique (le lieu) dans lequel les règles du jeu prennent le dessus sur celles de la réalité quotidienne. L’identification de cet espace permet aux observateurs de la session de jeu de mieux comprendre les relations que les joueurs tissent localement avec la réalité. Comment ceux-ci adoptent des rôles ou des comportements qu’ils n’auraient pas dans leur vie quotidienne.

Les participants a la session de jeu f’eau diem de Diender en mai 2024

De cette manière nous nous attendons à ce que les joueurs ne nous parlent pas directement de leurs problèmes et de solutions de gestion mais de ceux identifiés dans le jeu, qui pour autant ont des équivalences dans la réalité.

A partir des observations des sessions de jeux, l’objectif est de remplir la matrice des formalisations des règles largement inspirées de l’Institutional gramar. Ce formalisme nous semblait être en mesure de capturer les éléments de réglementation formelle ou informelle que les participants allaient évoquer dans le cercle magique (c.f. fig I).

Figure issue du papier de Schlüter, A., & Theesfeld, I. (2010). The grammar of institutions: The challenge of distinguishing between strategies, norms, and rules. Rationality and Society p. 457

Les institutions (action d’instituer en économie) sont composées d’un ensemble de stratégies, normes et règles qui sont mises en place par un groupe d’agents. Pour un agent, une institution peut-être consciente et inconsciente. La Stratégie décrit le comportement d’un joueur dans un jeu. Elle peut être individuelle si on ne sait pas qui d’autre la mobilise. Collective, dans ce cas là, on assiste à l’apparition d’une institution. Les normes peuvent être internalisées, c’est-à-dire incorporées à l’intérieur de l’individu de manière à ce qu’il s’y conforme sans récompense ou punition externe, ou elles peuvent être imposées par des sanctions positives ou négatives venant de l’extérieur.

Les règles identifiées par les observateurs devaient être mises en discussion puis testées dans des sessions de jeux. S’il y a eu des adaptations locales, on peut globalement dire que le plan ne s’est pas passé comme prévu. Philippe Karpe (Cirad – UMR SENS) nous avait un peu mis en garde vis-a-vis de la grille. Elle était très compatible avec le droit positif, mais assez peu opérante pour faire face aux systèmes de régulation endogène mis en place par les participants. On a donc encore du travail 🙂

Dundi Ferlo : travailler avec les populations locales au projet de Grande Muraille Verte

Penda Diop Diallo, a emmené le CNRF (Centre National de Recherche Forestière Sénégalais) dans les approches de modélisation d’accompagnement (ComMod). Dans ce projet il s’agira de s’inscrire dans le projet panafricain de la grande muraille verte, en prenant en accompagnant les acteurs dans le processus. Dans les faits, cela veut dire accompagner la mise en place de parcelles de reboisement gérer collectivement par les populations locales aussi bien du point de vue du fourrage herbacé, que du potentiel fourrage aérien, et un jour des productions forestières non ligneuses.

Dans le cadre de ce travail, Penda accompagnée d’Anna Ndiaye ont réutilisé et adapté un jeu sérieux dans la plus pure approche ComMod. Il s’agissait de se servir de cet outil comme d’un simulateur social qui permettent aux acteurs de se projeter dans des mesures de gestion, d’en évaluer ainsi la faisabilité et les implications sur l’usage de la ressource.

Ces activités, réalisées à Vélingara Ferlo et Younofere, ont amené les acteurs à exprimer des ensembles de règles de gestion qui ont été implémentés la même année dans les parcelles. Penda a travaillé à la formalisation de ces règles dans l’Institutional Grammar pour pouvoir identifier les trajectoires institutionnelles que chacune des zones a décidé de prendre. Cela permettra de comparer facilement les directions que vont prendre les deux terrains d’étude.

Les perspectives

Si ça vous intéresse je vous encourage à aller voir le site de l’institutional Grammar initiative. En terme de perspective, il me semble que ce cadre est extrêmement stimulant, malgré les limites identifié précédemment, pour modéliser et donc simplifier les types de relation liés aux règles formelles et informelles dans la zone.

Peaufiner XFCE

Vous savez comme va la vie, on à parfois besoin de changer le papier peint ! Depuis quelques mois, mon Linux tombait en petites pièces. De petits dysfonctionnements … qui ne sont pas gênants. Et puis un jour de grisaille, on se dit que ça suffit ! Je suis reparti sur une install de manjaro (ce dériver d’Archlinux) avec XFCE.

Ça fonctionne bien, mais je cherchais quelque chose d’un peut plus eye candy... Et bien XCFE est super paramétrable ! Ici quelques idées de choses à installer pour s’éloigner de l’austérité 🙂

Plank un dock léger et minimal

Installer plank, ce chouette dock qui est disponible dans les dépôts officiels

sudo pacman -S plank

N’oubliez pas de l’ajouter dans les applications au démarrage

Il est possible qu’une ligne grise vienne faire comme un reflet à quelques centimètres au déçu du dock. C’est l’ombre … qu’il faudra désactiver dans les paramètres de fenêtres: Paramètres -> Peaufinage des fenêtres -> Compositeur.

Un thème pour changer de look

Il n’y a pas mal de thèmes et icônes disponible sur https://www.xfce-look.org/

Une petite note sur Zettlr

Depuis 2018, j’ai pris l’habitude de prendre des notes en markdown des réunions, ou des pensées qui arrivait au fils de l’eau. Markdown parce que j’aime ce format, parce qu’il reste lisible même sans logiciel dédié, parce que c’est devenu un standard sur les différents dépôts git, et parce que j’aime les environnements de travail minimalistes, ça m’aide à rester concentré.

J’utilise depuis maintenant 1 an Zettlr après avoir passé pas mal de temps sur atom. Et j’en suis très satisfait ! Il permet l’export en docx, odt, etc. quand je dois travailler avec des collègues. Il supporte bien les entêtes yaml.

Ce matin je voulais changer la police de l’éditeur. Je suis un grand fan de la police utiliser par les blogs du monde diplo : WalbaumGrotesk. Je me suis dit que ce serait chouette de l’avoir pour écrire. J’ai un peut tâtonner, mais voilà, il faut aller dans Fichier → CSS personnalisé et ça permet pas mal de choses.

Pour mois ça donne ça pour utilisé cette chouette font!

body #editor {
font-family: 'WalbaumGrotesk Text', monospace;
}

Construire un container pour Cormas

Cormas est une plateforme de modélisation multi-agents développée en SmallTalk. Historiquement le choix de développement s’était porté sur VisualWork mais depuis quelque temps l’équipe regardait en direction de Pharo.

Cormas sous pharo

Le portage se fait petit à petit, et la feuille de route avance assez rapidement. Si le sujet vous intéresse, nous sommes en train de rédiger un manuel d’utilisation de cette nouvelle version de Cormas sous pharo.

Comme c’est le moment des grandes décisions on s’interroge sur les passerelles avec d’autres outils régulièrement utilisés par les communautés de chercheurs utilisant les SMA et plus largement la simulation. Pour le moment l’attention est portée sur les connexions entre cette nouvelle version de cormas et R et cormas/openMole.

Pour cette dernière, openMole intègre un système de conteneur basé sur udocker. Je suis donc en train de fouiller les possibilités de dockerisé cormas/pharo pour dans un futur que j’espère assez proche nous puissions faire l’ensemble de nos explorations en utilisant openMole.

Ecrire un dockerfile

# Set the base image
FROM ubuntu
# Dockerfile author / maintainer
MAINTAINER Etienne  <moi@truc.fr>

# Update software repository
# and install dependencies
run dpkg --add-architecture i386
run apt-get update && apt-get install -y curl unzip libx11-6:i386 libgl1-mesa-glx:i386 libfontconfig1:i386 libssl1.0.0:i386 libcairo2:i386

RUN mkdir cormas && cd cormas
RUN curl https://get.pharo.org | bash
RUN ./pharo Pharo.image config http://ss3.gemstone.com/ss/Cormas --install=development

Construire un conteneur à partir du dockerfile

sudo docker build -t cormas

Lancer un conteneur à partir du build

docker run --name cormas_instance -t cormas

Tester le fonctionnement

Votre conteneur doit être en train de fonctionner. Pour le vérifier, vous pouvez lancer les commandes suivantes.

docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
914f52adbd98 cormas "/bin/bash" About a minute ago Up About a minute cormas_instance
eeba02bea345 mdillon/postgis "docker-entrypoint.s…" 2 weeks ago Exited (0) 2 weeks ago psql-futurSahel

Vous voyez que j’ai deux conteneurs (psql-futurSahel et cormas_instance) et que le conteneur cormas_instance est en cour de fonctionnement.

On peut maintenant essayer d’interagir avec pharo à l’intérieur du conteneur

sudo docker exec -it 914f52adbd98 /pharo Pharo.image eval '1 + 20'

Si tout s’est bien passé, vous constaterez que pharo vous répond de manière aimable 21 !

Note :

Pour pousser un nouveau conteneur

sudo docker tag cormas elcep/cormas
sudo docker push elcep/cormas

 

Références :

Docker.(PostgreSQL + postGIS) copier des données d’un conteneur à l’autre

Dans un précédent post, je faisais mes premiers pas avec Docker. Arrive rapidement la situation où, vous avez deux conteneurs. L’un avec une base de données spatiale en développement et  l’autre avec LA base de données en production.

Bon, et il peut arriver qu’on veuille sauvegarder les données et/ou restaurer ces données. Typiquement. Vous avez peuplé votre base de nouvelles tables, vues, fonctions… et c’est le moment de passer tout ça en production… Voilà une piste !

Sauvegarder la base de données avec pg_dump ou pg_dumpall

docker exec -t your-db-container pg_dumpall -c -U postgres > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql

ou si la base existe déjà (et que vous ne voulez pas vous soucier des « owner » et « privileges »)

docker exec -t your-db-container pg_dump -d fs_gis -U postgres > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql

Envoyer le dump dans le conteneur de production

cat your_dump.sql | docker exec -i your-db-container psql -d dbname -U postgres

Le `|` est utilisé pour envoyer les information « lut » par le `cat` au fur et à mesure dans psql !

Source :

Un conteneur pour postgreSQL et postgis

Il arrive des moments dans la vie où on a besoin d’un petit serveur de base de données rapidement, là tout de suite. Si ça vous est déjà arrivé, vous savez que c’est parfois se lancer dans une aventure … qui si elle n’est pas périlleuse, peut s’avérer longue et douloureuse.

Alors, pourquoi ne pas en profiter pour passer à docker ? Parce qu’avec le principe de dockerfiles, l’installation ne prend pas plus longtemps que de télécharger les packages.

Installation docker sur Ubuntu

Source : docker.com

Le site de docker est très bien fait. Sur Ubuntu 16.04, il suffira de lancer les lignes de commandes suivantes.

sudo apt-get install -y --no-install-recommends apt-transport-https ca-certificates curl software-properties-common
 curl -fsSL https://apt.dockerproject.org/gpg | sudo apt-key add - apt-key fingerprint 58118E89F3A912897C070ADBF76221572C52609D
 sudo add-apt-repository "deb https://apt.dockerproject.org/repo/ \
 ubuntu-$(lsb_release -cs) \
 main"
 sudo apt-get update
 sudo apt-get -y install docker-ce

Si tout s’est déroulé sans accrocs, vous pouvez vérifier que docker fonctionne avec :

sudo docker run hello-world

Il ne reste enfin quelques petits ajustements à faire, notamment configurer votre utilisateur dans le groupe docker pour s’abstraire de l’utilisation de sudo par exemple. Vous trouverez ces choses-là sur cette page.

Installation de postGIS et postgreSQL

Source : postgis dockerfile

Pour créer un conteneur docker il suffit de lancer la commande docker run. Docker va vérifier si vous disposez d’une « image » du service que vous souhaitez lancer. Si c’est le cas, un conteneur sera créé, sinon les différentes composantes de l’image seront téléchargées et le conteneur sera créé dans la foulée.

On commence ici par créer un conteneur postGIS qui s’appellera psql-futurSahel (C’est l’étiquette du conteneur et cela n’aura pas d’influence sur la base de données). On définit le mot de passe de postgreSQL et on spécifie que l’on veut utiliser l’image postgis fournie par l’utilisateur mdillon.

docker run --name psql-futurSahel -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 mdillon/postgis

Pour que cela fonction, il faut également installer un postgreSQL et le lier à l’image de postGIS. Ce qui nous permettra ensuite d’accéder à l’interface de base de données et de nous connecter avec psql

docker run -it --link psql-futurSahel:postgres --rm postgres \
 sh -c 'exec psql -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres'

Dans Postgre

Si tout s’est passé comme il faut, suite à la dernière commande, et après téléchargement des différents constituants de l’image, vous êtes rentré dans le conteneur et vous avez en face de vous un prompt psql.

Vous pouvez donc utiliser les commandes habituelles de postgre. Il faut, une fois connecté à psql, créer une base de données

CREATE DATABASE fs_gis;

On peut ensuite se connecter à la base de données

\connect fs_gis;

Et lancer la commande

CREATE EXTENSION postgis;

La base est donc créée en utilisant le template postGIS.

Peupler la base de données

Vous avez maintenant un serveur de base de données spatiales qui tourne et auquel vous pouvez accéder depuis la machine hôte.

Pour connaître l’IP du conteneur :

docker inspect idconteneur

Vous pouvez alors configurer vos outils de gestion de base de données en utilisant l’IP du conteneur et/ou votre propre IP (ifconfig).

Dans Qgis vous pouvez configurer la gestion de la base de la manière suivante :

Et vous pouvez utiliser l’extension Base de données > Gestionnaire de base de données > Gestionnaire de base de données, pour importer dans postgreSQL vos données en cliquant sur ‘importer une couche ou un fichier’. Cet outil va utiliser le script shp2psql de manière transparente pour l’utilisateur.

Earthdata des données SIG pour l’environnement

Voilà plusieurs mois que je n’avais pas pris le temps de faire un post sur mon blog !
On trouve toujours beaucoup d’excuses, des papiers sur le feu, un déménagement, un nouveau post-doctorat… Alors pour recommencer doucement, une petite note sur un service de la NASA que j’ai découvert aujourd’hui : Reverb | echo[1]

logo earthdata
Un peu de contexte à cette découverte, mon nouveau post-doc m’a amené à sortir de ma zone de confort, on s’éloigne de la viticulture et de l’eau (encore que), pour travailler sur la zone sahélienne du Sénégal. Je cherchais des indicateurs de désertification… Et je suis tombé sur un blog génial de Martin Brandt[2] (chercheur au Department of Geosciences and Natural Resource Management à l’université de Copenhagen (Denmark)). En plus de pointer sur des papiers scientifiques, il y a aussi quelques posts sur des outils de télédétection (GRASS-GIS) et des liens vers des pourvoyeurs de données. C’est là que j’ai découvert LE truc.

Reverb est un silo de données environnementales propulsées par la NASA qui contient des choses incroyables et un puissant moteur de recherche. Je vous engage donc à regarder cette petite vidéo d’explication[3] (en anglais).

Je ne reviendrai pas sur la manière de trouver ses données, la vidéo est là, par contre une chose géniale qui pourrait inspirer d’autres sites : une fois que j’ai fait mon petit marché, le service me propose de télécharger un fichier TXT contenant les URLs des ressources demandées. L’idée est génial. Il y a quelques semaines, j’avais du faire une centaine de copier-coller depuis le site opendata.gouv.fr pour pouvoir automatiser un traitement sur le RGP de 2012[4] (j’en parlerai peut-être dans quelques mois quand l’article sera publié).

Donc une grande satisfaction, je disais, pour cette bonne pratique… je voulais donc me lancer dans un script bash et du wget… mais les ennuis arrivent …

wget http://e4ftl01.cr.usgs.gov//MODV6_Cmp_B/MOLT/MOD09Q1.006/2016.09.05/MOD09Q1.A2016249.h16v07.006.2016258071050.hdf

Connexion à urs.earthdata.nasa.gov (urs.earthdata.nasa.gov)|198.118.243.33|:443… connecté.
requête HTTP transmise, en attente de la réponse… 401 Unauthorized
Échec d’authentification par identifiant et mot de passe.
URL transformed to HTTPS due to an HSTS policy

Mince un login ! Nooon ! Pourtant Martin Brandt ne semble pas avoir ce problème. La solution est en deux étapes. Dans un premier temps, il faudra se créer un compte « earthdata » en cliquant sur login en haut à gauche. Ensuite, et la solution est sur le wiki [5], il faudra faire un petit fichier de config « curl ».

cd ~
touch .netrc
echo "machine urs.earthdata.nasa.gov login ; password " > .netrc
chmod 0600 .netrc

Vous l’aurez compris, il ne reste qu’à remplacer par votre login et par votre mot de passe. Et cette fois-ci les requêtes passeront !

wget http://e4ftl01.cr.usgs.gov//MODV6_Cmp_B/MOLT/MOD09Q1.006/2016.09.05/MOD09Q1.A2016249.h16v07.006.2016258071050.hdf

Sauvegarde en : « MOD09Q1.A2016249.h16v07.006.2016258071050.hdf »
MOD09Q1.A2016249.h1 100%[===================>]  64,76M   344KB/s    in 1m 51s

Merci pour les données, et merci pour cette facilité d’utilisation !!!

Données MODIS issu de earthdata
Les liens

[1]https://reverb.echo.nasa.gov
[2]https://matinbrandt.wordpress.com
[3]https://www.youtube.com/watch?v=iBXzzUv3b4w
[4]https://www.data.gouv.fr/fr/datasets/registre-parcellaire-graphique-2012-contours-des-ilots-culturaux-et-leur-groupe-de-cultures-majorita/
[5]https://wiki.earthdata.nasa.gov/display/EL/How+To+Access+Data+With+cURL+And+Wget