Nach Upgrade down: yarn: not found

Beim Versuch, meine selbstgehostete Discourse-Instanz forum.embeetle.com zu aktualisieren:

git pull
./launcher rebuild app

trat dieser Fehler auf:

sh: 1: yarn: nicht gefunden

und das Forum ist offline.

Dieses Problem sieht ähnlich aus (erwähnt ebenfalls yarn: nicht gefunden), bietet aber keine Lösung, die ich anwenden kann:

Hier ist der letzte Teil der Ausgabe von ./launcher rebuild app, einschließlich des Fehlers:

I, [2022-04-15T12:58:22.640335 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake plugin:pull_compatible_all'
WARNING: Plugins wurden vor dem Ausführen von `rake plugin:pull_compatible_all` aktiviert.
  Sie sollten diesen Befehl mit LOAD_PLUGINS=0 prefixieren.
I, [2022-04-15T12:58:28.725935 #1]  INFO -- : discourse-bbcode-color ist bereits auf der neuesten kompatiblen Version
docker_manager ist bereits auf der neuesten kompatiblen Version
discourse-math ist bereits auf der neuesten kompatiblen Version

I, [2022-04-15T12:58:28.726300 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
I, [2022-04-15T12:58:35.125132 #1]  INFO -- : 
I, [2022-04-15T12:58:35.125478 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile'
sh: 1: yarn: nicht gefunden
I, [2022-04-15T12:58:39.396023 #1]  INFO -- : Prüfung von „Tag Icons“ für „default“... 
I, [2022-04-15T12:58:39.396636 #1]  INFO -- : Asynchrone Prozesse werden beendet
I, [2022-04-15T12:58:39.396757 #1]  INFO -- : Senden von INT an HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 57
I, [2022-04-15T12:58:39.396823 #1]  INFO -- : Senden von TERM an exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 174
2022-04-15 12:58:39.396 UTC [57] LOG:  schneller Herunterfahrungsantrag empfangen
174:signal-handler (1650027519) SIGTERM empfangen, Herunterfahren geplant...
174:M 15 Apr 2022 12:58:39.399 # Benutzer angefordertes Herunterfahren...
174:M 15 Apr 2022 12:58:39.399 * Speichern des letzten RDB-Snapshots vor dem Beenden.
2022-04-15 12:58:39.416 UTC [57] LOG:  Abbrechen aller aktiven Transaktionen
174:M 15 Apr 2022 12:58:39.417 * Datenbank auf Festplatte gespeichert
174:M 15 Apr 2022 12:58:39.417 # Redis ist jetzt bereit zum Beenden, tschüss...
2022-04-15 12:58:39.418 UTC [57] LOG:  Hintergrundarbeitsprozess „logical replication launcher“ (PID 66) mit Exit-Code 1 beendet
2022-04-15 12:58:39.421 UTC [61] LOG:  Herunterfahren
2022-04-15 12:58:39.544 UTC [57] LOG:  Datenbanksystem heruntergefahren

FEHLGESCHLAGEN
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' fehlgeschlagen mit Rückgabewert #<Process::Status: pid 5379 exit 127>
Fehlerort: /pups/lib/pups/exec_command.rb:112:in `spawn'
Ausführung fehlgeschlagen mit den Parametern {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
13c38843d2b7e10b51c38f0d998f9e6e1c84fec93c7fc2ab2c044834ee6a8e59
** BOOTSTRAP FEHLGESCHLAGEN ** Bitte scrollen Sie nach oben und suchen Sie nach früheren Fehlermeldungen; es kann mehr als eine geben.
./discourse-doctor kann bei der Diagnose des Problems helfen.

Die Ausgabe von discourse-doctor ist zu groß, um hier gepostet zu werden, daher füge ich den Teil ein, der für mich am wichtigsten erscheint:

root@foechoer:/srv/embeetle_forum/discourse# ./discourse-doctor
DISCOURSE DOCTOR Fr 15. Apr 14:59:02 CEST 2022
OS: Linux foechoer.sikando.com 4.15.0-142-generic #146-Ubuntu SMP Di 13. Apr 01:11:19 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux


containers/app.yml gefunden

==================== YML-EINSTELLUNGEN ====================
DISCOURSE_HOSTNAME=forum.embeetle.com
SMTP_ADDRESS=smtp.zoho.com #mail.embeetle.com
DEVELOPER_EMAILS=johan@embeetle.com,kristof@embeetle.com,matic@embeetle.com
SMTP_PASSWORD=PASSWORD
SMTP_PORT=587
SMTP_USER_NAME=forum@embedeer.com
LETSENCRYPT_ACCOUNT_EMAIL=postmaster@sikando.com

==================== DOCKER-INFO ====================
DOCKER VERSION: Docker version 20.10.14, build a224086

DOCKER-PROZESSE (docker ps -a)

CONTAINER ID   IMAGE                              COMMAND                  CREATED         STATUS                     PORTS      NAMES
f972c6ac40db   nginx:latest                       "/docker-entrypoint.…"   16 Stunden her    Vor 16 Stunden                80/tcp     docker_chipselect_1
b8eaa7fc632d   docker_cs_php                      "docker-php-entrypoi…"   16 Stunden her    Vor 16 Stunden                9000/tcp   docker_cs_php_1
51c18c3af7d2   mariadb:latest                     "docker-entrypoint.s…"   16 Stunden her    Vor 16 Stunden                3306/tcp   docker_cs_mysql_1
b018a429fc83   hello-world                        "/hello"                 3 Tage her      Abgeschlossen (0) vor 3 Tagen                 blissful_wiles
f4064f10924a   local_discourse/app                "/sbin/boot"             11 Monate her   Abgeschlossen (5) vor 2 Minuten              app
bff8181744a2   discourse/base:2.0.20210415-1332   "/bin/bash -c 'cd /p…"   11 Monate her   Abgeschlossen (0) vor 11 Monaten              vigilant_einstein
fb6cca53886d   discourse/base:2.0.20210415-1332   "/bin/bash -c 'cd /p…"   11 Monate her   Abgeschlossen (0) vor 11 Monaten              gifted_mclaren
ea974bead75f   discourse/base:2.0.20201221-2020   "/bin/bash -c 'cd /p…"   13 Monate her   Abgeschlossen (0) vor 13 Monaten              ecstatic_margulis

==================== SCHWERWIEGENDES PROBLEM!!!! ====================
app läuft nicht!
Versuch, neu zu erstellen
==================== REBUILD-LOG ====================

...(lange Ausgabe weggelassen)...

FEHLGESCHLAGEN
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' fehlgeschlagen mit Rückgabewert #<Process::Status: pid 5379 exit 127>
Fehlerort: /pups/lib/pups/exec_command.rb:112:in `spawn'
Ausführung fehlgeschlagen mit den Parametern {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
1fc0ce85c275da0c2c9f39bc496581b4a5a80f0888378733e1e6e177698dc110
** BOOTSTRAP FEHLGESCHLAGEN ** Bitte scrollen Sie nach oben und suchen Sie nach früheren Fehlermeldungen; es kann mehr als eine geben.
./discourse-doctor kann bei der Diagnose des Problems helfen.
==================== ENDE REBUILD-LOG ====================
Neuerstellung von app fehlgeschlagen.

Prüfe Ihren Domainnamen . . .

Verbindung zu forum.embeetle.com erfolgreich.
Sie sollten wahrscheinlich alle nicht-Standard-Plugins entfernen und neu erstellen.
Versuch, vorhandenen Container neu zu starten. . . 

Starten des vorhandenen Containers
+ /usr/bin/docker start app
app
f4064f10924a   local_discourse/app   "/sbin/boot"             11 Monate her   Vor weniger als einer Sekunde              app
Container neu gestartet.


==================== PLUGINS ====================
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-math.git
          - git clone https://github.com/discourse/discourse-bbcode-color.git

Keine nicht-offiziellen Plugins erkannt.

Siehe https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb für die offizielle Liste.

========================================
Discourse-Version bei forum.embeetle.com: NICHT GEFUNDEN
Discourse-Version bei localhost: NICHT GEFUNDEN


==================== SPEICHERINFORMATION ====================
RAM (MB): 20553

              total        used        free      shared  buff/cache   available
Mem:          20071        4444        9431         292        6195       15517
Swap:          2047          96        1951

==================== FESTPLATTENPLATZ-PRÜFUNG ====================
---------- OS-Festplattenspeicher ----------
df: /var/discourse: Verzeichnis oder Datei nicht gefunden
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       1.4T  1.1T  279G  79% /

==================== FESTPLATTENINFORMATION ====================
Disk /dev/loop0: 111.6 MiB, 117014528 bytes, 228544 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop2: 61.9 MiB, 64901120 bytes, 126760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop3: 43.9 MiB, 45998080 bytes, 89840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop4: 110.6 MiB, 115986432 bytes, 226536 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop5: 61.9 MiB, 64901120 bytes, 126760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/loop6: 43.9 MiB, 45998080 bytes, 89840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 1.4 TiB, 1503238553600 bytes, 2936012800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x645c17b2

Device     Boot   Start        End    Sectors  Size Id Type
/dev/sda1  *       2048    1953791    1951744  953M 83 Linux
/dev/sda2       1953792 2936010751 2934056960  1.4T 83 Linux

==================== ENDE FESTPLATTENINFORMATION ====================

==================== MAIL-TEST ====================
Für einen robusten Test holen Sie sich eine Adresse unter http://www.mail-tester.com/
Oder senden Sie einfach eine Testnachricht an sich selbst.
E-Mail-Adresse für Mail-Test? ('n' zum Überspringen) [johan@embeetle.com]: 
Senden von Mail an johan@embeetle.com . . . 
Testen des Sendens an johan@embeetle.com unter Verwendung von smtp.zoho.com:587, Benutzername:forum@embedeer.com mit Plain-Auth.
SMTP-Server-Verbindung erfolgreich.
Senden an johan@embeetle.com . . . 
Mail vom SMTP-Server akzeptiert.
Message-ID: 0268f0a5-e5d3-430d-85ab-3c7f3e173487@forum.embeetle.com

Wenn Sie die Nachricht nicht erhalten, überprüfen Sie Ihren SPAM-Ordner
oder testen Sie erneut mit einem Dienst wie http://www.mail-tester.com/.

Wenn die Nachricht nicht zugestellt wird, liegt das Problem nicht bei Discourse.
Überprüfen Sie die SMTP-Server-Logs für die oben genannte Message-ID, um den Grund für das Nichtzustellen der Nachricht zu erfahren.
Ersetzen: SMTP_PASSWORD
Ersetzen: LETSENCRYPT_ACCOUNT_EMAIL
Ersetzen: DEVELOPER_EMAILS
Ersetzen: DISCOURSE_DB_PASSWORD
Ersetzen: Senden von Mail an

==================== FERTIG! ====================
Möchten Sie eine öffentlich verfügbare Version dieser Datei bereitstellen? (Y/n)y
Öffentlich verfügbares Log nicht generiert.

Sie können die Ausgabe dieses Skripts mit 
LESS=-Ri less /tmp/discourse-debug.txt
untersuchen.

ABER ZUERST stellen Sie sicher, dass Sie die ersten drei Befehle unten kennen!!!

Befehle, die Sie kennen sollten, wenn Sie die Datei mit dem oben genannten Befehl (genannt „less“) anzeigen:
q              -- Beenden
/error<ENTER>  -- Suche nach dem Wort „error"
n              -- Suche nach dem nächsten Vorkommen
g              -- Zum Anfang der Datei gehen
f              -- Eine Seite vorwärts gehen
b              -- Eine Seite rückwärts gehen
G              -- Zum Ende der Datei gehen

Ich glaube, der Fehler im anderen Thema lag daran, dass nicht der richtige Branch von Discourse verwendet wurde (master wurde in main umbenannt). Das Installationsprogramm sollte dies automatisch ändern, aber es gab einige Fälle, in denen dies nicht der Fall war.

Nach allem, was ich bei einer Suche herausfinden konnte, könnten Sie versuchen:

cd /var/discourse
git checkout main

Und dann versuchen, neu zu erstellen?

(Ich werde auch @pfaffman und @Falco ein Fledermaussignal senden, da sie viel mehr Erfahrung damit haben als ich :slight_smile: )

Das Forum ist wieder online.

Das habe ich gemacht:

  1. Verwende git status, um den aktuellen Branch zu überprüfen. Er ist bereits main, aber nicht die neueste Revision, obwohl ich vor ein paar Stunden ein Pull gemacht habe. Keine Ahnung warum. Er hing bei Revision 990519e237 „Rename master to main“ vom 03.08.2021 20:50:04.

  2. Habe erneut git pull ausgeführt. Dies wechselte zu Revision 2a9faf7e56 „Bump default base image“ vom 13.04.2022 06:22:53.

  3. Habe ./launcher rebuild app ausgeführt. Dies begann, extrem lange Zeilen (wie JSON aussehend) in mein Terminal zu schreiben, danach wurde die Verbindung zu meinem Server geschlossen.

  4. Habe mich wieder am Server angemeldet und ./launcher start app ausgeführt. Keine Fehler, aber das Forum war immer noch nicht online.

  5. Habe erneut versucht, ./launcher rebuild app auszuführen. Dies funktionierte ohne Probleme und das Forum ist wieder online.

Ich bin glücklich, bin mir aber immer noch nicht sicher, was schiefgelaufen ist. Wahrscheinlich im Zusammenhang mit der Umbenennung des Branches von master zu main, wie Sie @JammyDodger vermutet haben.