Closed jum-s closed 4 years ago
une installation sans sudo
devrait être possible en installant NodeJS via nvm
Il serait bien de privilégier docker.
Le mieux serait que l'unique middleware/dépendance logicielle vis a vis du serveur soit docker.
Il est effectivement préférable de tout faire passer par docker, mais le travail à fournir n'est pas le même (par rapport à une commande sudo apt install nodejs
). Au vu des autres taches prioritaires à réaliser, nous souhaiterions déléguer ce ticket aux mainteneurs du serveur abes, ca vous parait faisable ?
Je viens d'installer nodejs sur le serveur. Est-ce qu'il faut d'autre outils ?
A tester pour la solution node/npm via des alias docker :
# cat /etc/profile.d/docker-node.sh
alias npm="docker run --user $(id -u):$(id -g) -it --rm -e HOME -e NODE_ENV -e DEBUG -v $HOME:$HOME -v $(pwd):/usr/app/ -w /usr/app node:12.8.1 npm"
alias node="docker run --user $(id -u):$(id -g) -it --rm -e HOME -e NODE_ENV -e DEBUG -v $HOME:$HOME -v $(pwd):/usr/app/ -w /usr/app node:12.8.1 node"
@MathieuBarret la version de node installée semble être v6.17.1
, hors il me semble qu'il nous faut au minimum v6.4
(support de la syntax ES6) et idéalement >= v8
(la plus ancienne LTS encore maintenue)
Avec les conseils de @Kerphi j'ai mis en place des alias pour les commandes npm et node qui lance un conteneur docker pour l’exécution des scripts.
Pouvez-vous tester?
il semble maintenant y avoir 2 manières d'accéder à node :
[poc-fne@withanie-dev poc-fne-wikibase-docker]$ /usr/bin/node --version
v6.17.1
[poc-fne@withanie-dev poc-fne-wikibase-docker]$ node --version
v8.16.1
j'ai créé un script de test de l’environnement Node (sur une branche temporaire dédié test-node-env
), lequel échoue actuellement quand appelé par npm
# depuis le serveur ABES
cd ~/poc-fne
npm run test-env-node
avec l'erreur suivante :
npm run test-node-env
npm ERR! path /usr/app/package.json
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open '/usr/app/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! /home/maxime/.npm/_logs/2019-08-27T18_53_48_615Z-debug.log
alors qu'il marche quand appelé directement, mais c'est le node installé globalement qui est utilisé
# depuis le serveur ABES
~/poc-fne/scripts/test_node_env.js
# => hello! v6.17.1
pour que le système arrive à résoudre l’environnement des scripts commençant par #!/usr/bin/env node
, il me semble pour ma part plus opportun/beaucoup moins galère d'avoir un NodeJS installé globalement (soit par le package manager soit par nvm) et non par Docker
J'ai modifié le wrapper node
et npm
pour ne pas passer par le système d'alias.
Ca semble mieux se passer :
[poc-fne@withanie-dev poc-fne]$ npm run test-node-env
> @ test-node-env /usr/app
> ./scripts/test_node_env.js
hello! v8.16.1
Et pour la vielle version de nodejs (6.17.1) je vais en parler à @MathieuBarret pour la désinstaller tout simplement.
ah pas mal le /usr/local/bin/node
:D j'imagine qu'il y a certains cas où -v $(pwd):/usr/app/
n'est pas suffisant (si le script fait appel à des fichiers hors du pwd) (?) mais ça devrait suffire pour notre usage
On peut faire une tentative comme ça (car ça serait bien si on pouvait arriver à contenir les dépendances de l'OS à uniquement docker) mais si ça génère trop d'effets de bord (et oui tu as raison pour les fichiers "hors du pwd") on passera par un repository yum dédié à nodejs ou carrément par nvm.
On peut aussi peut-être monter en version 12 de nodejs (c'est très facile avec le wapper) ? car c'est la version stable actuelle qui va démarrer son cycle LTS très bientôt (octobre 2019) et qui va courir jusqu'en 2022.
Aujourd'hui les scripts d'import de notices sont exécutés sur des machines sur lesquelles NodeJS est déjà installé et exécutable. Ce n'est pas le cas du serveur du POC. Or les scripts d'import devraient pourvoir être exécutés et l'installation de NodeJS documenté pour pouvoir être lancé par n'importe quel utilisateur du serveur.
Validation du ticket: En tant qu'utilisateur du serveur, je veux pourvoir installer NodeJS via une documentation afin de lancer les scripts d'import via le serveur grâce à une commande simple type
npm run etl-notices ...
Solutions possibles (à choisir par les équipes ABES qui gère le serveur ?): NodeJS peut-être installé directement sur le serveur (plus simple) ou bien via une image Docker (nécéssite la mise en place d'alias et de redéfinition de chemin d'environnement
$PATH
) Si la première solution est retenue une installation viasudo
est nécessaire ce que l'utilisateurpoc-fne
du serveur n'est pas est devra donc être réalisé par l'ABES.