Skip to content

Instantly share code, notes, and snippets.

@eswak
Created November 24, 2017 23:05
Show Gist options
  • Save eswak/f9431be3bb5e1044a7b6ad0255199c18 to your computer and use it in GitHub Desktop.
Save eswak/f9431be3bb5e1044a7b6ad0255199c18 to your computer and use it in GitHub Desktop.
Les commandes à exécuter pour installer la chaîne iota2

Installer la chaîne iota2

le 23/11/2017, j'ai installé la chaîne iota2 sur mon pc. J'ai rencontré quelques difficultés pour connaître l'enchaînement des commandes à éxécuter, et pour compiler la chaîne. Voici les différentes étapes que j'ai suivi pour arriver à mes fins.

Etape 1 : télécharger le code

Le code est disponible sur gitlab : https://framagit.org/inglada/iota2

# se déplacer dans le dossier où on veut mettre la chaîne iota2, puis
# clone (télécharge) le code dans le dossier "./iota2"
git clone https://framagit.org/inglada/iota2.git ./iota2
# si git n'est pas installé, il faut l'installer :
sudo apt-get install git
# si on veut avoir la version en cours de développement (peut être instable)
cd iota2
git checkout develop
cd ..

Etape 2 : installer les dépendances

Un script pour installer les dépendances est disponible dans le dossier iota2 :

cd iota2/scripts/install
sudo ./init_Ubuntu.sh # également disponible : ./init_CentOS.sh

Ce script va installer tout les paquets systèmes nécessaires (cmake, g++, ...) ainsi que tout les paquets python nécessaire (pip install config, ...).

Etape 3 : Compiler OTB & iota2

Note : un readme pour cette étape est disponible sur gitlab.

Toujours dans le dossier iota2/scripts/install, le script generation.sh permet de lancer toutes les commandes nécessaires.

./generation.sh --all

Cette étape prend du temps (plusieurs heures), il y a plein de téléchargements, décompressions, compilations, ...

Note: j'ai eu un problème lors de la compilation de l'OTB, voilà l'erreur console :

[ 34%] Performing build step for 'GEOS'
CMake Error at /home/eswak/git/iota2/scripts/install/OTB/build/GEOS/src/GEOS-stamp/GEOS-build-Release.cmake:16 (message):
  Command failed: 2

   'make'

  See also

    /home/eswak/git/iota2/scripts/install/OTB/build/GEOS/src/GEOS-stamp/GEOS-build-*.log

en regardant le fichier de log, voilà l'erreur :

/home/eswak/git/iota2/scripts/install/OTB/build/GEOS/src/GEOS/include/geos/platform.h:142:27: error: ‘isnan’ was not declared in this scope
 #  define ISNAN(x) isnan(x)

en éditant le fichier suivant, le problème n'apparait plus :

nano /home/eswak/git/iota2/scripts/install/OTB/build/GEOS/src/GEOS/include/geos/platform.h

rechercher les lignes avec ça (en haut de fichier) :

/* Set to 1 if C++/C99 std::isnan is defined */
/* #undef HAVE_STD_ISNAN */

et rajouter cette ligne en dessous :

#define HAVE_STD_ISNAN 1

Puis il faut relancer la compilation avec ./generation.sh --all et attendre plusieurs heures.

Une fois que tout est terminé, une archive iota2_OTB-*.tar.gz devrait être créée dans le dossier iota2/scripts/install (qui devrait être le dossier courant si vous suivez le tutorial depuis le début).

Etape 4 : installer iota2

Une fois l'archive générée, on la décompresse pour avoir toute l'abrorescence :

tar –xzvf iota2_OTB-*.tar.gz

Voilà, tout les fichiers sont en place ! Pour éviter de lancer des commandes à chaque fois qu'on ouvre le terminal, mettre ceci dans ~/.bashrc :

# iota2
export iota2_PATH=/home/eswak/git/iota2/scripts/install # mettre le bon chemin (où vous avez décompressé l'archive)
source $iota2_PATH/prepare_env.sh
alias iota2='$iota2_PATH/../../common/launchChain.sh'

Une fois que c'est fait, fermer et réouvrir la fenêtre de la console, ou faire source ~/.bashrc.

La chaîne est installée ! Pour la lancer il faut faire la commande :

iota2 ./configIOTA2.cfg

Pour construire un fichier de configuration correct, se référer à la documentation.

@BravoMike974
Copy link

Bonjour,

J'ai rencontré exactement le même problème que vous décrivez à l'étape 3

Cependant après avoir rajouté la ligne de code "#define HAVE_STD_ISNAN 1" dans platform.h, je relance la compilation avec "./generation.sh --all" et là j'ai aussitôt un message d’erreur me disant qu'il ne peut pas créer le dossier OTB car il existe déjà. Normal!

La solution serait de supprimer le dossier OTB, mais celle-ci entraînerait la suppression des fichiers et la modification faite sur la ligne de code (ce qui reproduira l'erreur initiale) , il m'est donc impossible de relancer l'installation sans avoir une erreur par la suite.

Quelle manipulation avez-vous fait pour relancer l'installation?

Merci pour vos éléments de réponses

Matthias,

@inglada
Copy link

inglada commented Jan 29, 2018

Bonjour,
Désolé de la réponse tardive. Les notifications par e-mail de mon compte étaient désactivées.
Modifier le code pour faire passer la compilation, n'est pas une bonne idée, car, comme vous le voyez vous-mêmes, dans le cas d'une mise à jour ou une re-compilation, les changements peuvent être perdus.
Il me semble que les problèmes rencontrés viennent de la version du compilateur utilisée.
OTB et ses dépendances compilent sans problèmes dans la plupart de plate-formes récentes.
Pouvez-vous donner des détails sur votre compilateur (version, etc.)?
Merci
Jordi

@eswak
Copy link
Author

eswak commented Feb 2, 2018

Bonjour,
Effectivement ce n'est pas une solution en soit, c'était juste pour débloquer la situation.

J'utilise "ubuntu for windows" qui permet d'avoir un sous-système linux complet & un shell bash. C'est intégré sur tout les windows 10 maintenant.

Voici ma configuration :
GCC: gcc -v -> gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)
Cmake: cmake -v -> cmake version 3.5.1
Libstd: locate libstd -> /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
Kernel: uname -r -> 4.4.0-43

Par ailleurs j'ai l'impression qu'il y a un conflit entre les librairies compilées lors de l'installation de iota2 et celles que j'ai dans mon système.
Par exemple lorsque je fais LD_LIBRARY_PATH=$install_dir/lib:$install_dir/lib/otb/python:$LD_LIBRARY_PATH pour ajouter les libs du dossier iota2 à mon path, après il me devient impossible d'exécuter certaines commandes.
Par exemple :

$ ssh-keygen
ssh-keygen: /mnt/z/Work/git/iota2/scripts/install/OTB//install/lib/libcrypto.so.1.0.0: no version information available (required by ssh-keygen)
ssh-keygen: /mnt/z/Work/git/iota2/scripts/install/OTB//install/lib/libcrypto.so.1.0.0: no version information available (required by ssh-keygen)
OpenSSL version mismatch. Built against 1000207f, you have 1000110f

Un contournement que j'ai trouvé est de set LD_LIBRARY_PATH directement dans scripts/common/launchChain.sh (au lancement de la chaîne donc) et pas dans scripts/install/prepare_env.sh comme ça ma variable d'environnement n'est modifiée lorsque je lance la chaîne.

@BravoMike974 j'ai dû faire quelques modifications sur le script d'installation pour qu'il puisse être lancé plusieurs fois et reprendre où il s'était arrêté. La pull-request est disponible ici, et c'est ce commit en particulier qui va vous intéresser je pense.

ps: désolé pour le temps de réponse je n'ai pas reçu de notification non plus !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment