Ich experimentiere damit, Discourse auf den Graviton-basierten Instanzen von AWS auszuführen, da diese preislich attraktiv sind. Ich verstehe, dass die Unterstützung für aarch64 experimentell ist, aber die Build-Nachricht besagt, dass Probleme gemeldet werden sollen, also ist dies hier. Ich denke, viele betreiben Discourse bei AWS, daher kann dies hoffentlich auch anderen zugutekommen.
Ich habe eine bestehende Installation unter arm64 zum Laufen gebracht, nachdem ich sie neu erstellt und einige grundlegende Plausibilitätsprüfungen durchgeführt hatte, um sicherzustellen, dass das Frontend geladen wird. Ein ./launcher logs web_only zeigt jedoch, dass rails.stderr.log ständig mit Folgendem gefüllt wird:
ERROR: ld.so: object '/usr/lib/libjemalloc.so.1' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
ERROR: ld.so: object '/usr/lib/libjemalloc.so.1' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
Und tatsächlich existiert /usr/lib/libjemalloc.so.1 unter arm64 nicht, wie es bei den x86-Images der Fall ist, aber /usr/lib/libjemalloc.so.2 schon. Ich habe den Versionsunterschied unter arm64 auf Folgendes zurückgeführt:
Nebenbemerkung: Lob für die gute Dokumentation der Änderung.
Ich denke, die Fehlermeldung stammt aus der spezifischen Erwähnung des nicht vorhandenen /usr/lib/libjemalloc.so.1 hier:
Eine schnelle und schmutzige Überschreibung von $RUBY_ALLOCATOR in templates/web.template.yml scheint die Fehlermeldung erfolgreich gestoppt zu haben, sodass Rails (Puma?) jetzt mit der richtigen libjemalloc läuft.
Nichtsdestotrotz weiß ich nicht, ob eine ordnungsgemäße Korrektur mehr Änderungen als diese erfordert und ob eine solche Änderung andere Auswirkungen auf Produktionssysteme haben könnte. Ich wollte es trotzdem teilen, falls es andere betrifft, die versuchen, Discourse mit arm64 bei AWS zu verwenden. Vielleicht kann sich das Discourse-Team das auch ansehen?