Ich habe es gerade geschafft, meine erste Discourse-Instanz erfolgreich einzurichten, obwohl ich unterwegs einige Schwierigkeiten hatte. Ich verwende Debian Stretch und habe mich an den Docker-Installationsleitfaden gehalten.
Während der Einrichtung prüft das Skript überprüft, ob die eingegebene Domain tatsächlich auf diesem Rechner auflöst. Dies geschieht mithilfe von nc (netcat). Ich habe herausgefunden, dass dies mein Problem war: Ich hatte netcat nicht installiert. Eine einfache Installation hat das behoben.
Dennoch halte ich dies für einen Fehler im Installationsskript. Eine einfache Funktion, die prüft, ob nc installiert ist, sollte Abhilfe schaffen. Alternativ könnte man dem Benutzer auch die Möglichkeit geben, die Prüfung komplett zu überspringen, was das Problem ebenfalls lösen würde.
Das ist schon einmal aufgetaucht, aber netcat discourse-setup findet es nicht.
Die Prüfung gibt lediglich eine Warnung aus, die du ignorieren kannst, daher betrachte ich dies nicht als Fehler.
Ich habe darüber nachgedacht, dass discourse-setupnc installiert, aber es scheint besser zu vermeiden, dass discourse-setup etwas installiert, das möglicherweise nie benötigt wird.
Vielleicht ist der richtige Weg, wenn nc fehlt, den Test zu überspringen und vorzuschlagen, dass du nc selbst installierst, falls der Test gewünscht ist, und dabei sogar apt install nc anbieten könntest.
Ich muss mich respektvoll widersprechen – das riecht hier wirklich nach einem Bug. Ja, du gibst eine Warnmeldung aus, die ignoriert werden kann, aber für jemanden, der Discourse zum ersten Mal installiert, sollte der Prozess so einfach wie möglich sein. Das bedeutet, dass man nicht tief im Quellcode graben muss, um herauszufinden, dass netcat installiert werden muss, damit dies fehlerfrei funktioniert. Jeder Fehler verwirrt den Benutzer oder Systemadministrator, was dazu führt, dass sie Zeit damit verbringen, herauszufinden, warum es nicht funktioniert, und die Person, die den Code geschrieben hat, mit git blame zu konfrontieren.
Dies lässt sich leicht umgehen, indem vor der IP-Prüfung eine einfache Kontrolle durchgeführt wird, wie folgt:
Prüfen, ob netcat installiert ist
Falls ja, fortfahren
Falls nein, eine Warnmeldung ausgeben und dem Benutzer die Option geben, mit Ja/Nein fortzufahren, ohne die Prüfung durchzuführen, oder abzubrechen, damit er netcat installieren kann (oder sogar anbieten, es über apt/yum/pacman für ihn zu installieren).
Eine weitere Option, die auf mehr Systemen (wenn auch nicht auf allen) funktionieren würde als derzeit, ist die Verwendung des /dev/tcp-Stacks. Weitere Informationen dazu finden Sie hier. Dies würde es für Debian beheben und funktioniert unter Ubuntu. Ich habe es noch nicht auf anderen Distributionen ausprobiert.