Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

L'installeur en version complète ne persiste plus définitivement le PATH du moment de l'installation du JDK #5944

Conversation

AmauryCarrade
Copy link
Member

@AmauryCarrade AmauryCarrade commented Oct 4, 2020

L'installation du JDK local (pour ElasticSearch) avait un bug extrêmement fourbe : suite à une petite erreur dans le script d'installation, le script d'activation de l'environnement virtuel persistait définitivement le PATH du moment de l'installation dans l'environnement virtuel. Une des conséquences est de fixer la version de Node dans l'environnement virtuel à celle lors de l'installation, car cette modification du PATH est placée après nvm use dans le fichier zdsenv/bin/activate (et assimilés), provoquant des situations assez incompréhensibles où à l'activation du venv, nvm précise qu'il passe dans la bonne version de Node, mais une autre se retrouve active à la fin de l'exécution de la commande.

Ce commit corrige ce comportement en évitant de persister le PATH du moment de l'installation dans le fichier zdsenv/bin/activate (ou assimilé).

Je rencontre ce problème. Comment le corriger sans tout réinstaller ?

Si vous avez ce problème, le moyen le plus simple de le résoudre est de supprimer ces trois lignes du fichier zdsenv/bin/activate, placées à la toute fin du fichier, normalement :

export PATH="..."
export JAVA_HOME="..."
export ES_JAVA_OPTS="..."

…puis d'exécuter une toute petite partie du script d'installation afin de les restaurer correctement (ce qui ne devrait pas prendre plus de quelques dizaines de secondes, dépendant de votre connexion internet).

./scripts/install_zsh.sh +jdk-local

Contrôle qualité

Il y a deux manières de tester : la version longue (qui implique une réinstallation complète de la version intégrale de ZdS) et une version réduite au minimum (qui n'implique que de ré-exécuter le bout du script d'installation qui a été altéré, en ayant restauré l'instance à l'état qu'il s'attend à trouver juste avant de tourner).

Version longue

  • Supprimez le dossier zdsenv, ou autre dossier que vous utiliseriez pour l'environnement virtuel.
  • Installez la version complète de ZdS : make install-linux-full.

Version courte

  • Si vous avez déjà installé la version complète de ZdS, assurez-vous que les variables d'environnement citées plus haut dans la partie « Je rencontre ce problème » sont bien supprimées de votre zdsenv/bin/activate. Dans le doute, vérifiez qu'elles ne sont bien plus là.
  • Exécutez le bout du script d'instalaltion qui était impacté : ./scripts/install_zsh.sh +jdk-local.

Commun aux deux versions

  • Ouvrez le fichier zdsenv/bin/activate et vérifiez que la redéfinition du $PATH à la fin du fichier ne contient pas tout votre PATH (la ligne doit être courte avec une référence à l'ancien $PATH).
  • Activez l'environnement virtuel (source zdsenv/bin/activate) et vérifiez (avec node -v) que vous avez bien la bonne version de NodeJS. Elle doit être la même que celle indiquée par la sortie du script d'installation après « Now using node v12.18.1 » (la version peut être légèrement différente chez vous).
  • Maintenant, nous allons simuler une évolution de version de Node dans ZdS.
    • Modifiez le fichier .nvmrc à la racine du dépôt et remplacez son contenu par la chaîne 14.
    • Installez Node 14 dans nvm (nvm install 14).
      Note : cette installation est locale à nvm ; elle ne va pas impacter les autres versions de NodeJS installées, ni celle installée via votre gestionnaire de paquets, le cas échéant.
    • Quittez l'environnement virtuel (deactivate) et retournez dedans (source zdsenv/bin/activate).
    • Vérifiez (node -v) que vous êtes bien sur Node 14.
    • Restaurez le contenu du fichier .nvmrc (git reset --hard .nvmrc).
    • Si vous le souhaitez, désinstallez la version 14 de Node que vous avez installé pour l'occasion (nvm uninstall 14).

L'installation du JDK local (pour ElasticSearch) avait un bug extrêmement
fourbe : suite à une petite erreur dans le script d'installation, le
script d'activation de l'environnement virtuel persistait définitivement
le PATH du moment de l'installation dans l'environnement virtuel. Une des
conséquences est de fixer la version de Node dans l'environnement virtuel
à celle lors de l'installation, car cette modification du PATH est placée
après `nvm use` dans le fichier `zdsenv/bin/activate` (et assimilés),
provoquant des situations assez incompréhensibles où à l'activation du
venv, nvm précise qu'il passe dans la bonne version de Node, mais une autre
se retrouve active à la fin de l'exécution de la commande.

Ce commit corrige ce comportement en évitant de persister le PATH du moment
de l'installation dans le fichier `zdsenv/bin/activate` (ou assimilé).

Si vous avez ce problème, le moyen le plus simple de le résoudre est de
supprimer ces trois lignes du fichier `zdsenv/bin/activate`, placées à la
toute fin du fichier, normalement :

export PATH="..."
export JAVA_HOME="..."
export ES_JAVA_OPTS="..."

…puis d'exécuter une toute petite partie du script d'installation afin de les
restaurer correctement (ce qui ne devrait pas prendre plus de quelques secondes,
dépendant de votre connexion internet).

./scripts/install_zsh.sh +jdk-local
@AmauryCarrade AmauryCarrade added S-BUG Corrige un problème C-DevelopmentEnv Amélioration de l'environnement de dev labels Oct 4, 2020
@AmauryCarrade AmauryCarrade added this to En développement in Suivi des PR via automation Oct 4, 2020
@AmauryCarrade AmauryCarrade moved this from En développement to En attente de QA in Suivi des PR Oct 4, 2020
@coveralls
Copy link

coveralls commented Oct 4, 2020

Coverage Status

Coverage remained the same at 86.85% when pulling bb5beca on AmauryCarrade:fix-installation-script-trickery-that-persists-install-time-node-version-even-if-nvmrc-changes into 7dbd58e on zestedesavoir:dev.

@Situphen Situphen self-requested a review November 22, 2020 19:23
…s-install-time-node-version-even-if-nvmrc-changes
Copy link
Member

@Situphen Situphen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Chose promise, chose faite.

QA OK !

Suivi des PR automation moved this from En attente de QA to Fusionnable après rebase Dec 17, 2020
@Situphen Situphen merged commit 8902b9f into zestedesavoir:dev Dec 17, 2020
Suivi des PR automation moved this from Fusionnable après rebase to Fusionnée Dec 17, 2020
viki53 pushed a commit to viki53/zds-site that referenced this pull request Jul 7, 2022
…ATH (zestedesavoir#5944)

L'installation du JDK local (pour ElasticSearch) avait un bug extrêmement
fourbe : suite à une petite erreur dans le script d'installation, le
script d'activation de l'environnement virtuel persistait définitivement
le PATH du moment de l'installation dans l'environnement virtuel. Une des
conséquences est de fixer la version de Node dans l'environnement virtuel
à celle lors de l'installation, car cette modification du PATH est placée
après `nvm use` dans le fichier `zdsenv/bin/activate` (et assimilés),
provoquant des situations assez incompréhensibles où à l'activation du
venv, nvm précise qu'il passe dans la bonne version de Node, mais une autre
se retrouve active à la fin de l'exécution de la commande.

Ce commit corrige ce comportement en évitant de persister le PATH du moment
de l'installation dans le fichier `zdsenv/bin/activate` (ou assimilé).

Si vous avez ce problème, le moyen le plus simple de le résoudre est de
supprimer ces trois lignes du fichier `zdsenv/bin/activate`, placées à la
toute fin du fichier, normalement :

export PATH="..."
export JAVA_HOME="..."
export ES_JAVA_OPTS="..."

…puis d'exécuter une toute petite partie du script d'installation afin de les
restaurer correctement (ce qui ne devrait pas prendre plus de quelques secondes,
dépendant de votre connexion internet).

./scripts/install_zsh.sh +jdk-local

Co-authored-by: Situphen <Situphen@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-DevelopmentEnv Amélioration de l'environnement de dev S-BUG Corrige un problème
Projects
Suivi des PR
  
Fusionnée
Development

Successfully merging this pull request may close these issues.

None yet

3 participants