Erreur lors de la mise à jour ESOCKETTIMEDOUT registry.yarnpkg.com

Tentative de mise à jour de Discourse via la procédure manuelle

git pull
./launcher rebuild app
...

./discourse-doctor affiche une erreur

I, [2023-06-16T11:39:43.530890 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'yarn install --frozen-lockfile & yarn cache clean'
error An unexpected error occurred: "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz: ESOCKETTIMEDOUT".
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'yarn install --frozen-lockfile & yarn cache clean' failed with return #<Process::Status: pid 281 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "cmd"=>["su discourse -c 'yarn install --frozen-lockfile & yarn cache clean'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
f485460571ab9e30e0d6917b05c9a8fe1772df13d8cae9fe67108961fae71039
==================== END REBUILD LOG ====================

Le même problème lorsque j’ai essayé d’exécuter
./launcher rebuild app

J’ai essayé de télécharger date-fns-2.29.3.tgz sur un hôte Linux, et cela fonctionne.

wget https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz
Connecting to registry.yarnpkg.com (104.16.26.35:443)
s'enregistre dans 'date-fns-2.29.3.tgz'
date-fns-2.29.3.tgz  100% |*************************************************************************************************************|  712k  0:00:00 ETA
'date-fns-2.29.3.tgz' enregistré

Discourse hébergé sur une VM Alpine Linux

Je rencontre le même problème sur un VPS Ubuntu. Aucune idée.

Je ne peux pas dire si c’est le vrai problème ou si vous avez un problème avec la mise en réseau Docker.

1 « J'aime »

Il est possible que cela puisse être résolu en ajoutant plus de temps avant que yarn n’abandonne. J’ai soumis une pull request :

Vous pouvez apporter cette modification manuellement comme expliqué par Mario Lurig :

Voir aussi :

3 « J'aime »

Excellent. Citée pour la permanence et la recherche :

Cependant, pendant que j’attendais que l’étape 9 se termine (après avoir exécuté ./discourse-setup) et que tout soit construit, cela échouait avec une erreur ESOCKETTIMEDOUT liée à yarn. Le dernier message qui essaie de s’exécuter est [ ! -d 'node_modules' ] || su discourse -c 'yarn install --production \u0026\u0026 yarn cache clean'.

La Correction

Vous devez installer un éditeur ; je préfère nano, donc apt-get install nano fait l’affaire. Ensuite, allez dans /var/discourse/templates et exécutez : nano web.template.yml. À titre de comparaison, voici le fichier que vous avez cloné depuis github et la zone d’intérêt se situe autour de la ligne 159. Cela vous dit quelque chose ? C’est la même commande notée ci-dessus avant qu’elle n’échoue. Nous devons ajouter une nouvelle section au-dessus de cette ligne pour augmenter le délai d’attente.

  • exec: cd: $home cmd: - “su discourse -c ‘yarn config set network-timeout 600000 -g’”

Enregistrez cette modification, puis réexécutez ./discourse-setup et voilà, c’est terminé ! Cela prendra certainement un certain temps, en particulier l’étape de compression brotli, mais cela se terminera.

3 « J'aime »

J’ai eu le même timeout, mais j’ai eu des problèmes pour implémenter la solution suggérée, donc j’aimerais ajouter quelques détails.

Premièrement, j’ai eu du mal à trouver /var/discourse/templates, car mon installation de Discourse se trouve dans un emplacement non standard. Je cherchais dans Docker, ce qui n’a bien sûr aucun sens.

Deuxièmement, le numéro de ligne 159 n’est plus correct. Je suppose que vous faites référence à cette section de template.yml :

- exec:
      cd: $home
      hook: yarn
      cmd:
        - |
          if [ "$version" != "tests-passed" ]; then
            rm -rf app/assets/javascripts/node_modules
          fi
        - su discourse -c 'yarn install --frozen-lockfile &amp;&amp; yarn cache clean'

Troisièmement, je ne suis pas très familier avec yaml, pups et yarn ou comment ils sont utilisés dans Discourse, et je ne voulais pas deviner. Au lieu de cela, j’ai essayé ce changement à la section d’origine :

  - exec:
      cd: $home
      hook: yarn
      cmd:
        - |
          if [ "$version" != "tests-passed" ]; then
            rm -rf app/assets/javascripts/node_modules
          fi
        - su discourse -c 'yarn config set network-timeout 600000 -g &amp;&amp; yarn install --frozen-lockfile &amp;&amp; yarn cache clean'

Cela fonctionne pour moi. ./launcher rebuild app prend maintenant très longtemps (plus de 2 heures pour moi), mais au moins il se termine, et le forum fonctionne à nouveau.

Enfin, j’aimerais ajouter que ce problème (pour moi) n’était certainement pas un manque de mémoire : j’utilise un VPS avec 32 Go installés, dont 24 Go étaient libres lorsque le problème est survenu.

2 « J'aime »