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
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.
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.
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 && 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 && yarn install --frozen-lockfile && 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.