Installation de Tikka sur Linux

tikka1

Installation

Ouvrez un terminal, car il va falloir taper des commandes…

Assurez vous d’avoir installé une version de python supérieure ou égale à 3.7 en tapant :

python --version

qui renvoie un texte de ce genre :

Python 3.7.12

Si la version est inférieure (3.6 ou moins) il faut installer une version supérieure.
Renseignez vous sur le paquet disponible pour votre distribution.

Peut-être que cette commande peut fonctionner si votre distribution dispose d’un paquet nommé python3.7 :

sudo apt-get install python3.7

Si la version Python de base de votre distribution est une version 2.x.y, alors les commandes python et pip de ce guide seront à remplacer par python3 et pip3, après l’installation de la version 3 en parallèle de la version 2.

Puis, il faut installer sur votre système la bibliothèque de cryptographie libsodium et le compilateur gcc :

La commande proposée ici est pour Ubuntu/Debian :

sudo apt-get install libsodium23 gcc

Pour isoler l’installation de Tikka des autres outils Python, voici la procédure :

Créer un dossier dédié à l’installation de Tikka et allez dedans :

mkdir tikka
cd tikka

Créer un environnement virtuel Python dans le dossier .venv :

python -m venv .venv

Activer l’environnement virtuel, normalement le prompt du shell change :

source .venv/bin/activate

Confirmer que l’environnement est activé en vérifiant que le chemin de Python est bien dans le dossier .venv :

which python

Vous pouvez maintenant installer Tikka dans cet environnement isolé (dans le dossier .venv/bin) :

pip install tikka

Pour connaître le chemin exact où est installé tikka :

which tikka

Vous pouvez maintenant lancer la commande tikka affichée depuis n’importe où !

Mise à jour

Aller dans le dossier tikka et activer l’environnement virtuel :

source .venv/bin/activate

Puis lancer la commande de mise à jour :

pip install -U tikka

Avertissement : les versions inférieures à la 1.0.0 sont des versions de développements qui peuvent nécessiter la suppression de la base de données locale lors des mises à jour. En cas de problème après une mise à jour, supprimez le dossier suivant et relancez Tikka :

rm -r ~/.config/tikka/
5 « J'aime »

J’ai pu l’installer via pip qui remarche ! :partying_face:

1 « J'aime »

Je viens d’installer tikka via pip, ça fonctionne mais ça se voit que c’est une ancienne version basée sur duniter v1 :confused:

Ce serait bien que tu publish les changements pour duniter v2 qu’on a vu lors de la visio de ce dimanche :slight_smile:

2 « J'aime »

Fait. La première version pour Duniter v2s est la 0.5.0.

J’en ai profité pour renommer « Ajouter un compte » en « Importer un compte » dans tout le code.

A tester…

2 « J'aime »

Je viens d’essayer de metter à jour avec la commande pip install -U --user tikka, mais ça semble échouer:

ERROR: scalecodec 1.0.35 has requirement requests>=2.24.0, but you'll have requests 2.22.0 which is incompatible.

Et quand je lance tikka ça crash au démarrage maintenant:

$ python3 -m tikka
DEBUG:root:SELECT migration_hash FROM {0.migration_table_quoted} ORDER by applied_at_utc
ERROR:root:no such table: currency
Traceback (most recent call last):
  File "/home/elois/.local/lib/python3.8/site-packages/tikka/adapters/repository/sqlite3.py", line 80, in run
    cursor.execute(request, arg)
sqlite3.OperationalError: no such table: currency
ERROR:root:no such table: currency
Traceback (most recent call last):
  File "/home/elois/.local/lib/python3.8/site-packages/tikka/adapters/repository/sqlite3.py", line 80, in run
    cursor.execute(request, arg)
sqlite3.OperationalError: no such table: currency
ERROR:root:no such table: entry_points
Traceback (most recent call last):
  File "/home/elois/.local/lib/python3.8/site-packages/tikka/adapters/repository/sqlite3.py", line 75, in run
    cursor.execute(request)
sqlite3.OperationalError: no such table: entry_points
ERROR:root:no such table: entry_points
Traceback (most recent call last):
  File "/home/elois/.local/lib/python3.8/site-packages/tikka/adapters/repository/sqlite3.py", line 80, in run
    cursor.execute(request, arg)
sqlite3.OperationalError: no such table: entry_points
ERROR:root:no such table: entry_points
Traceback (most recent call last):
  File "/home/elois/.local/lib/python3.8/site-packages/tikka/adapters/repository/sqlite3.py", line 75, in run
    cursor.execute(request)
sqlite3.OperationalError: no such table: entry_points
Traceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/elois/.local/lib/python3.8/site-packages/tikka/__main__.py", line 43, in <module>
    main()
  File "/home/elois/.local/lib/python3.8/site-packages/tikka/__main__.py", line 37, in main
    application_ = Application(DATA_PATH)
  File "/home/elois/.local/lib/python3.8/site-packages/tikka/domains/application.py", line 117, in __init__
    self.entry_points = EntryPoints(
  File "/home/elois/.local/lib/python3.8/site-packages/tikka/domains/entry_points.py", line 78, in __init__
    self.init_repository()
  File "/home/elois/.local/lib/python3.8/site-packages/tikka/domains/entry_points.py", line 96, in init_repository
    self.current_url = self.repository.list(0, 1)[0].url
IndexError: list index out of range
^CException ignored in: <module 'threading' from '/usr/lib/python3.8/threading.py'>
Traceback (most recent call last):
  File "/usr/lib/python3.8/threading.py", line 1388, in _shutdown
    lock.acquire()
KeyboardInterrupt: 

En supprimant les données de tikka ça marche :

rm ~/.config/tikka -r
1 « J'aime »

Lors de l’installation j’ai vu appraitre ces lignes en rouge :

ERROR: gdon 0.0.9 has requirement duniterpy==0.56, but you'll have duniterpy 1.0.0 which is incompatible.
ERROR: scalecodec 1.0.35 has requirement requests>=2.24.0, but you'll have requests 2.22.0 which is incompatible.

Je ne sais pas si c’est grave,
Après j’arrive à lancer tikka.
Mais quand je veux ajouter une adresse par copié collé depuis césium j’ai « adresse de compte non valide » est-ce lié ?

L’option crée un compte semble marcher, mais bien sûr j’ai oublié de noter le mnémonique, y a-t-il un moyen de le retrouver, de le sauvegarder, de le transférer vers mon téléphone pour Gekko par exemple ???
Je ne vois pas non plus de moyen de supprimer ce compte.

Sera-t-il possible d’avoir le même mot de passe pour tous les comptes ? Quand on gère plusieurs comptes, cela pourrait être intéressant.

Bon je suis sûr que j’en demande déjà trop en l’état actuel du développement.
Je suis là pour faire l’utilisateur lambda…

J’ai la 2ème mais pas la 1ère (sans doute car je n’ai par installer duniterpy sur mon poste actuel).
Je ne sais pas si c’est grave ou pas, mon tikka semble marcher quand même.

À priori ça n’a rien à voir. Tikka gère les adresses au format de substrate/duniter-v2, or cesium gère les adresses au format duniter-v1, il faut convertir l’adresse, mais à ma connaissance il n’y à pas encore d’outil pratique pour le faire, perso je le fais via du code rust directement.

Ça serait bien que quelqu’un code un outil de conversion et le publie sur une page web :slight_smile:

Si tu as le mot de passe tu peux déchiffrer la seed, mais je sais pas si tikka stocke le mnemonic. @vit une feature qui ne semble utile: pouvoir réafficher le mnemonic si on entre le bon mot de passe, ça peut être dans un menu « exporter un compte » :slight_smile:

Ce serait également une fonctionnalité utile, mais en attendant le seul moyen semble être de tout supprimer:

rm ~/.config/tikka

Oui graçe aux dérivations, j’en ai déjà parlé à @vit lors de noter visio ce lundi, j’aimerais également cette fonctionnalité, qui est présente dans polkadotjs.

Oui c’est encore en early développement donc forcément il manque encore plein de features, mais je suppose que nos retours d’alpha-testeurs sont quand même utiles à vit :grin:

Merci pour les retours !

Pour plus de clarté, ne mettons dans ce sujet que les problèmes qui concernent l’installation et le lancement.

Peux-tu répéter ton message dans un nouveau sujet, car oui on peut déjà supprimer un compte (menu contextuel) et convertir un compte V1 (menu comptes V1).

Les erreurs que renvoie pip sont importantes. Je ne peux pas garantir le bon fonctionnement de Tikka si pip n’a pas pu installer une dépendance car elle existe déjà dans une autre version.

ERROR: gdon 0.0.9 has requirement duniterpy==0.56, but you'll have duniterpy 1.0.0 which is incompatible.
ERROR: scalecodec 1.0.35 has requirement requests>=2.24.0, but you'll have requests 2.22.0 which is incompatible.

Signifie que gdon utilise une autre version de duniterpy. Les deux versions de duniterpy étant incompatibles, tu dois isoler les environnements Python des deux projets.

Je vais modifier le sujet pour ajouter comment faire, sinon il y aura toujours des problèmes de conflits de dépendances.

Attention, la commande python donnée ici doit lancer Python 3.7.x minimum. (ça peut être python3 chez vous ou /chemin/vers/python3.7 ou autre…)

Pour isoler l’installation de Tikka des autres outils Python, voici la procédure :

Créer un dossier dédié à l’installation de Tikka et allez dedans :

mkdir tikka
cd tikka

Créer un environnement virtuel Python dans le dossier .venv :


python -m venv .venv

Activer l’environnement virtuel, normalement le prompt du shell change :

source .venv/bin/activate

Confirmer que l’environnement est activé en vérifiant que le chemin de Python est bien dans le dossier .venv :

which python

Vous pouvez maintenant installer Tikka dans cet environnement isolé (dans le dossier .venv/bin) :


pip install tikka

Pour connaître le chemin exact où est installé tikka :


which tikka

Vous pouvez maintenant lancer la commande tikka affichée depuis n’importe où !

Je viens d’installer Tikka sur Mint, ça fonctionne bien après avoir supprimé les anciennes données :slight_smile:

Je me connecte a un noeud local, je vois son numéro de bloc en réactualisant, j’importe un trousseau, je vois son solde en actualisant.

Par contre:

  • Je ne peux pas créer de dérivations ?
  • Je n’arrive pas à effectuer un virement: le boutton Envoyer reste grisé.

Cool ! :partying_face:

Nope, pas encore. Mais tu peux donner un chemin de dérivation dans « Importer un compte ». Même un compte de dev comme //Alice.

Encore un problème d’ergonomie peut-être ou un bug. Mais là il me faut plus d’infos.

Pour tout ce qui n’est pas un problème d’installation, je vais créer une catégorie Tikka dans support. Il faudra poster dedans.

1 « J'aime »

Un message a été scindé en un nouveau sujet : Problème virement impossible

Erreur lors de l’install dans un environnement virtuel Python (mais Tikka se lance quand même) :

Je te mets les logs

Requirement already satisfied: setuptools in ./.venv/lib/python3.8/site-packages (from jsonschema<4.0.0,>=3.2.0->duniterpy==1.0.0->tikka) (44.0.0)
Collecting toolz>=0.8.0
  Using cached toolz-0.11.2-py3-none-any.whl (55 kB)
Building wheels for collected packages: pypeg2, pyaes
  Building wheel for pypeg2 (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/vincentux/Tikka/.venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-s397zr70/pypeg2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-s397zr70/pypeg2/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-q8v42of8
       cwd: /tmp/pip-install-s397zr70/pypeg2/
  Complete output (6 lines):
  usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: setup.py --help [cmd1 cmd2 ...]
     or: setup.py --help-commands
     or: setup.py cmd --help
  
  error: invalid command 'bdist_wheel'
  ----------------------------------------
  ERROR: Failed building wheel for pypeg2
  Running setup.py clean for pypeg2
  Building wheel for pyaes (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /home/vincentux/Tikka/.venv/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-s397zr70/pyaes/setup.py'"'"'; __file__='"'"'/tmp/pip-install-s397zr70/pyaes/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-43u8hhcn
       cwd: /tmp/pip-install-s397zr70/pyaes/
  Complete output (6 lines):
  usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: setup.py --help [cmd1 cmd2 ...]
     or: setup.py --help-commands
     or: setup.py cmd --help
  
  error: invalid command 'bdist_wheel'
  ----------------------------------------
  ERROR: Failed building wheel for pyaes
  Running setup.py clean for pyaes
Failed to build pypeg2 pyaes
Installing collected packages: PyQt5-Qt5, PyQt5-sip, PyQt5, py-ed25519-bindings, idna, charset-normalizer, urllib3, certifi, requests, base58, more-itertools, scalecodec, six, ecdsa, py-sr25519-bindings, xxhash, websocket-client, pycryptodome, eth-typing, toolz, cytoolz, eth-hash, eth-utils, eth-keys, py-bip39-bindings, substrate-interface, PyYAML, tabulate, sqlparse, yoyo-migrations, mnemonic, attrs, graphql-core, libnacl, pypeg2, pyrsistent, jsonschema, pyaes, duniterpy, tikka
    Running setup.py install for pypeg2 ... done
    Running setup.py install for pyaes ... done
Successfully installed PyQt5-5.15.6 PyQt5-Qt5-5.15.2 PyQt5-sip-12.10.1 PyYAML-6.0 attrs-21.4.0 base58-2.1.1 certifi-2022.5.18.1 charset-normalizer-2.0.12 cytoolz-0.11.2 duniterpy-1.0.0 ecdsa-0.17.0 eth-hash-0.3.2 eth-keys-0.4.0 eth-typing-3.0.0 eth-utils-2.0.0 graphql-core-3.2.1 idna-3.3 jsonschema-3.2.0 libnacl-1.8.0 mnemonic-0.19 more-itertools-8.13.0 py-bip39-bindings-0.1.9 py-ed25519-bindings-1.0.1 py-sr25519-bindings-0.1.4 pyaes-1.6.1 pycryptodome-3.14.1 pypeg2-2.15.2 pyrsistent-0.18.1 requests-2.27.1 scalecodec-1.0.35 six-1.16.0 sqlparse-0.4.2 substrate-interface-1.2.4 tabulate-0.8.9 tikka-0.5.4 toolz-0.11.2 urllib3-1.26.9 websocket-client-1.3.2 xxhash-2.0.2 yoyo-migrations-7.3.2
error: invalid command 'bdist_wheel'

A priori cela ne vient pas de Tikka, mais de la dépendance pypeg2 qui doit être compilée.

Après recherche sur internet, selon la distribution, on dirait que la solution n’est pas toujours la même. Des pistes :

Je peux peut-être t’aider si tu me précise bien ta distribution Linux.

Après un simple sudo apt install pypeg2 ça à l’air ok

~/Tikka$ pip install tikka
Requirement already satisfied: tikka in ./.venv/lib/python3.8/site-packages (0.5.4)
Requirement already satisfied: duniterpy==1.0.0 in ./.venv/lib/python3.8/site-packages (from tikka) (1.0.0)
Requirement already satisfied: substrate-interface<2.0.0,>=1.2.4 in ./.venv/lib/python3.8/site-packages (from tikka) (1.2.4)
Requirement already satisfied: mnemonic<0.20,>=0.19 in ./.venv/lib/python3.8/site-packages (from tikka) (0.19)
Requirement already satisfied: PyYAML<7.0,>=6.0 in ./.venv/lib/python3.8/site-packages (from tikka) (6.0)
Requirement already satisfied: yoyo-migrations<8.0.0,>=7.3.1 in ./.venv/lib/python3.8/site-packages (from tikka) (7.3.2)
Requirement already satisfied: PyQt5<6.0.0,>=5.15.6 in ./.venv/lib/python3.8/site-packages (from tikka) (5.15.6)
Requirement already satisfied: pyaes<2.0.0,>=1.6.1 in ./.venv/lib/python3.8/site-packages (from duniterpy==1.0.0->tikka) (1.6.1)
Requirement already satisfied: graphql-core<4.0.0,>=3.1.2 in ./.venv/lib/python3.8/site-packages (from duniterpy==1.0.0->tikka) (3.2.1)
Requirement already satisfied: jsonschema<4.0.0,>=3.2.0 in ./.venv/lib/python3.8/site-packages (from duniterpy==1.0.0->tikka) (3.2.0)
Requirement already satisfied: libnacl<2.0.0,>=1.7.2 in ./.venv/lib/python3.8/site-packages (from duniterpy==1.0.0->tikka) (1.8.0)
Requirement already satisfied: pypeg2<3.0.0,>=2.15.2 in ./.venv/lib/python3.8/site-packages (from duniterpy==1.0.0->tikka) (2.15.2)
Requirement already satisfied: websocket-client<2.0.0,>=1.1.0 in ./.venv/lib/python3.8/site-packages (from duniterpy==1.0.0->tikka) (1.3.2)
Requirement already satisfied: base58<3.0.0,>=2.1.0 in ./.venv/lib/python3.8/site-packages (from duniterpy==1.0.0->tikka) (2.1.1)
Requirement already satisfied: attrs<22.0.0,>=21.2.0 in ./.venv/lib/python3.8/site-packages (from duniterpy==1.0.0->tikka) (21.4.0)
Requirement already satisfied: pycryptodome<4,>=3.11.0 in ./.venv/lib/python3.8/site-packages (from substrate-interface<2.0.0,>=1.2.4->tikka) (3.14.1)
Requirement already satisfied: scalecodec<2,>=1.0.35 in ./.venv/lib/python3.8/site-packages (from substrate-interface<2.0.0,>=1.2.4->tikka) (1.0.35)
Requirement already satisfied: py-sr25519-bindings<1,>=0.1.4 in ./.venv/lib/python3.8/site-packages (from substrate-interface<2.0.0,>=1.2.4->tikka) (0.1.4)
Requirement already satisfied: requests<3,>=2.21.0 in ./.venv/lib/python3.8/site-packages (from substrate-interface<2.0.0,>=1.2.4->tikka) (2.27.1)
Requirement already satisfied: certifi>=2019.3.9 in ./.venv/lib/python3.8/site-packages (from substrate-interface<2.0.0,>=1.2.4->tikka) (2022.5.18.1)
Requirement already satisfied: xxhash<3,>=1.3.0 in ./.venv/lib/python3.8/site-packages (from substrate-interface<2.0.0,>=1.2.4->tikka) (2.0.2)
Requirement already satisfied: eth-keys<1,>=0.2.1 in ./.venv/lib/python3.8/site-packages (from substrate-interface<2.0.0,>=1.2.4->tikka) (0.4.0)
Requirement already satisfied: py-ed25519-bindings<2,>=1.0 in ./.venv/lib/python3.8/site-packages (from substrate-interface<2.0.0,>=1.2.4->tikka) (1.0.1)
Requirement already satisfied: ecdsa<1,>=0.17.0 in ./.venv/lib/python3.8/site-packages (from substrate-interface<2.0.0,>=1.2.4->tikka) (0.17.0)
Requirement already satisfied: py-bip39-bindings<1,>=0.1.9 in ./.venv/lib/python3.8/site-packages (from substrate-interface<2.0.0,>=1.2.4->tikka) (0.1.9)
Requirement already satisfied: idna<4,>=2.1.0 in ./.venv/lib/python3.8/site-packages (from substrate-interface<2.0.0,>=1.2.4->tikka) (3.3)
Requirement already satisfied: eth-utils<3,>=1.3.0 in ./.venv/lib/python3.8/site-packages (from substrate-interface<2.0.0,>=1.2.4->tikka) (2.0.0)
Requirement already satisfied: tabulate in ./.venv/lib/python3.8/site-packages (from yoyo-migrations<8.0.0,>=7.3.1->tikka) (0.8.9)
Requirement already satisfied: sqlparse in ./.venv/lib/python3.8/site-packages (from yoyo-migrations<8.0.0,>=7.3.1->tikka) (0.4.2)
Requirement already satisfied: PyQt5-sip<13,>=12.8 in ./.venv/lib/python3.8/site-packages (from PyQt5<6.0.0,>=5.15.6->tikka) (12.10.1)
Requirement already satisfied: PyQt5-Qt5>=5.15.2 in ./.venv/lib/python3.8/site-packages (from PyQt5<6.0.0,>=5.15.6->tikka) (5.15.2)
Requirement already satisfied: setuptools in ./.venv/lib/python3.8/site-packages (from jsonschema<4.0.0,>=3.2.0->duniterpy==1.0.0->tikka) (44.0.0)
Requirement already satisfied: pyrsistent>=0.14.0 in ./.venv/lib/python3.8/site-packages (from jsonschema<4.0.0,>=3.2.0->duniterpy==1.0.0->tikka) (0.18.1)
Requirement already satisfied: six>=1.11.0 in ./.venv/lib/python3.8/site-packages (from jsonschema<4.0.0,>=3.2.0->duniterpy==1.0.0->tikka) (1.16.0)
Requirement already satisfied: more-itertools in ./.venv/lib/python3.8/site-packages (from scalecodec<2,>=1.0.35->substrate-interface<2.0.0,>=1.2.4->tikka) (8.13.0)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in ./.venv/lib/python3.8/site-packages (from requests<3,>=2.21.0->substrate-interface<2.0.0,>=1.2.4->tikka) (1.26.9)
Requirement already satisfied: charset-normalizer~=2.0.0; python_version >= "3" in ./.venv/lib/python3.8/site-packages (from requests<3,>=2.21.0->substrate-interface<2.0.0,>=1.2.4->tikka) (2.0.12)
Requirement already satisfied: eth-typing<4,>=3.0.0 in ./.venv/lib/python3.8/site-packages (from eth-keys<1,>=0.2.1->substrate-interface<2.0.0,>=1.2.4->tikka) (3.0.0)
Requirement already satisfied: cytoolz<1.0.0,>=0.10.1; implementation_name == "cpython" in ./.venv/lib/python3.8/site-packages (from eth-utils<3,>=1.3.0->substrate-interface<2.0.0,>=1.2.4->tikka) (0.11.2)
Requirement already satisfied: eth-hash<0.4.0,>=0.3.1 in ./.venv/lib/python3.8/site-packages (from eth-utils<3,>=1.3.0->substrate-interface<2.0.0,>=1.2.4->tikka) (0.3.2)
Requirement already satisfied: toolz>=0.8.0 in ./.venv/lib/python3.8/site-packages (from cytoolz<1.0.0,>=0.10.1; implementation_name == "cpython"->eth-utils<3,>=1.3.0->substrate-interface<2.0.0,>=1.2.4->tikka) (0.11.2)

Installer pypeg2 sur le système revient à installer aussi pypeg2 dans le python global du système, ce qui n’est pas forcément désiré.

Il faudrait plutôt installer bdist_wheel sur le système. Pour que pypeg2 se compile et s’installe uniquement dans l’environnement virtuel.