Fehler beim Update ESOCKETTIMEDOUT registry.yarnpkg.com

Versuch, Discourse über das manuelle Verfahren zu aktualisieren

git pull
./launcher rebuild app
...

./discourse-doctor zeigt einen Fehler an

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 ====================

Das gleiche Problem trat auf, als ich versuchte,
./launcher rebuild app
auszuführen.

Ich habe versucht, date-fns-2.29.3.tgz auf einem Linux-Host herunterzuladen, und es funktioniert.

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

Discourse gehostet auf einer Alpine Linux VM

Ich habe das gleiche Problem auf einem Ubuntu VPS. Keine Ahnung, woran es liegt.

Ich kann nicht sagen, ob das das eigentliche Problem ist oder ob Sie ein Problem mit dem Docker-Netzwerk haben.

1 „Gefällt mir“

Es ist möglich, dass dies behoben werden kann, indem mehr Zeit hinzugefügt wird, bevor Yarn aufgibt. Ich habe einen Pull Request eingereicht:

Sie können diese Änderung manuell vornehmen, wie von Mario Lurig erklärt:

Siehe auch:

3 „Gefällt mir“

Ausgezeichnet. Zitiert für Dauerhaftigkeit und Suche:

Als ich jedoch darauf wartete, dass Schritt 9 abgeschlossen wurde (nachdem ich ./discourse-setup ausgeführt hatte) und alles erstellt wurde, schlug es mit einem ESOCKETTIMEDOUT-Fehler im Zusammenhang mit yarn fehl. Die letzte Nachricht, die versucht auszuführen, lautet [ ! -d 'node_modules' ] || su discourse -c 'yarn install --production \u0026\u0026 yarn cache clean'.

Die Lösung

Sie müssen einen Editor installieren; ich bevorzuge nano, also apt-get install nano erledigt die Aufgabe. Gehen Sie dann zu /var/discourse/templates und führen Sie aus: nano web.template.yml. Zum Vergleich, hier ist die Datei, die Sie von GitHub geklont haben und der interessierende Bereich befindet sich um Zeile 159. Kommt Ihnen das bekannt vor? Es ist derselbe Befehl wie oben erwähnt, bevor er fehlschlug. Wir müssen einen neuen Abschnitt über dieser Zeile hinzufügen, um das Timeout zu erhöhen.

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

Speichern Sie diese Änderung, führen Sie dann ./discourse-setup erneut aus und siehe da, abgeschlossen! Es wird definitiv eine Weile dauern, insbesondere der Brotli-Komprimierungsschritt, aber es wird abgeschlossen sein.

3 „Gefällt mir“

Ich hatte das gleiche Timeout, aber ich hatte Probleme bei der Implementierung der vorgeschlagenen Lösung, daher möchte ich einige Details hinzufügen.

Erstens hatte ich einige Schwierigkeiten, /var/discourse/templates zu finden, da meine Discourse-Installation an einem nicht standardmäßigen Ort ist. Ich habe in Docker gesucht, was natürlich keinen Sinn ergibt.

Zweitens ist Zeilennummer 159 nicht mehr korrekt. Ich gehe davon aus, dass Sie sich auf diesen Abschnitt von template.yml beziehen:

- 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'

Drittens bin ich mit yaml, pups und yarn oder deren Verwendung in Discourse nicht sehr vertraut und wollte nicht raten. Stattdessen habe ich diese Änderung am ursprünglichen Abschnitt versucht:

  - 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'

Das funktioniert für mich. ./launcher rebuild app dauert jetzt sehr lange (bei mir über 2 Stunden), aber zumindest läuft es bis zum Ende durch und das Forum funktioniert wieder.

Schließlich möchte ich hinzufügen, dass dieses Problem (für mich) sicherlich nicht auf einen Speichermangel zurückzuführen war: Ich verwende einen VPS mit 32 GB RAM, von denen 24 GB frei waren, als das Problem auftrat.

2 „Gefällt mir“