Push++: error while loading shared libraries: libicui18n.so.60

Bitte in den Beiträgen keine externe Bilder einbinden, sondern nur die Dateianhänge verwenden.
Vielen dank.
  • Hallo,

    wenn ich versuche den Push-Server unter Debian 11 zu starten erhalte ich folgenden Fehler im Status:

    Zitat

    /usr/local/bin/pushxx: error while loading shared libraries: libicui18n.so.60: cannot open shared object file: No such file or directory

    LG,

    Afox

  • Cyperghost 20. Dezember 2021 um 11:40

    Hat das Thema freigeschaltet.
  • Das Problem ist, ich kann leider nicht für alle Distribution die executable beilegen, dann wäre das Plugin zu groß als das was von z.b. Woltlab als Limit von 20 MB im Plugin-Store drinnen steht schnell erreicht. Solltest du aber eine Distribution, wie z.b. Debian 11 haben, kannst du diese mit Hilfe der Source selber bauen, die liegt extra dafür dabei.

    Aktuell haben wir für Debian 11 noch kein Fertiges Image, ich werde dies aber gerne später anhängen sollte ich ein fertiges haben.

  • Ich wäre wirklich dankbar wenn es ein entsprechendes Image für Debian 11 gäbe da ich sonst die ganzen Entwicklerwerkzeuge auf meinem Produktivsystem installieren müsste. Bisher habe ich so etwas nämlich noch nicht machen müssen und auch kein (Debian) System dafür :D

  • Danke, ich bin gerade auch dabei es zu kompilieren und es kommt der Fehler:

    Zitat

    Project ERROR: Unknown module(s) in QT: core network

    Hattest du das auch? Wie hast du es gelöst?

    Vollständige Fehlermeldung

    make -j

    cd QHttpServer/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Makefile /path/to/pushxx_src/QHttpServer/QHttpServer.pro CONFIG+=release ) && make -f Makefile

    Project ERROR: Unknown module(s) in QT: core network

    make: *** [Makefile:50: sub-QHttpServer-make_first-ordered] Fehler 3

    LG

    Einmal editiert, zuletzt von Afox (20. Dezember 2021 um 15:45)

  • Ich habe ersteres installiert und nun kommen immerhin keine solchen Fehler mehr. Aber er läuft noch nicht. Als Statusmeldung sagt er:

    Zitat

    Cannot start without configuration file.

    Die Datei /etc/pushxx.conf ist aber vorhanden und der Secret Key ist eingetragen. Ich war mir nur nicht sicher ob es erlaubt ist ein Leerzeichen nach dem Gleichzeichen zu machen und ob der Key ohne Anführungszeichen oder Ähnliches eingetragen wird.

    Hier nochmal die vollständige Meldung:

    systemctl status pushxx

    pushxx.service - Push++ Socket Server

    Loaded: loaded (/etc/systemd/system/pushxx.service; enabled; vendor preset: enabled)

    Active: inactive (dead) since Mon 2021-12-20 19:21:39 CET; 1s ago

    Process: #### ExecStart=/usr/local/bin/pushxx (code=exited, status=0/SUCCESS)

    Main PID: #### (code=exited, status=0/SUCCESS)

    CPU: 8ms

    Cannot start without configuration file.

    Usage: /usr/local/bin/pushxx [options]

    Options:

    -c <config> Path to the configuration file

    -v Enables verbose output

    -V <version> Prints version

    -t <test> Tests configuration and exits

    -h, --help Displays help on commandline options.

    --help-all Displays help including Qt specific options.

    systemd[1]: pushxx.service: Succeeded.

    Prozess-ID und Main PID wurden von mir zensiert.

  • Ich möchte aber nochmal auf meinen Kompilierungsversuch zurückkommen und fragen woran es ggf. gelegen haben könnte dass dieser Fehler auftaucht und ich unter Debian 11 nicht kompilieren konnte. Hatte mir extra eine eigene Maschine zu diesem Zweck aufgesetzt.

    Einmal editiert, zuletzt von Afox (21. Dezember 2021 um 12:24)

  • libqt5core5a aus den Debian 11 Paketen hat ebenfalls diese Version. Dann kann es vielleicht an mir liegen. Also ich habe mich an das was in der README Datei steht gehalten.

    • Die Source Datei entpackt
    • in diesen Ordner gewechselt
    • einen Ordner "build" erstellt
    • in den Ordner "build" gewechselt
    • den Befehl qmake -o Makefile "CONFIG+=release" ../Pushxx.pro; ausgeführt
    • den Befehl make -j ausgeführt
  • libqt5core5a aus den Debian 11 Paketen hat ebenfalls diese Version. Dann kann es vielleicht an mir liegen. Also ich habe mich an das was in der README Datei steht gehalten.

    • Die Source Datei entpackt
    • in diesen Ordner gewechselt
    • einen Ordner "build" erstellt
    • in den Ordner "build" gewechselt
    • den Befehl qmake -o Makefile "CONFIG+=release" ../Pushxx.pro; ausgeführt
    • den Befehl make -j ausgeführt

    das sieht soweit genau so aus wie wir das auch machen.

    Ich hänge hier einmal unsere Dockerfile an die wir verwenden um das ganze zu bauen. Ggfs. fehlt dir eins dieser Pakete ;)

  • Danke,

    apt-get install qtbase5-dev

    apt-get install libqt5websockets5-dev

    hatten schon etwas geholfen. Habe dann noch einen Teil von Euren Paketen installiert und nun ist die erzeugte Datei "pushxx" im Ordner pushxx keine 300kB groß. Ich weiß nicht ob das richtig sein kann. Der Build endete wie folgt:

    Spoiler anzeigen

    g++ -c -pipe -O2 -mtune=generic -fstack-protector-all -fPIE -fPIC -Wall -std=gnu++11 -Wall -Wextra -D_REENTRANT -fPIC -DSTATIC -DQT_NO_DEBUG -DQT_CORE_LIB -I../../pushxx-pm -I. -I../../sigwatch -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o moc_configuration.o moc_configuration.cpp

    ../../pushxx-pm/processmanager.cpp: In member function \u2018void ProcessManager::shutdown()\u2019:

    ../../pushxx-pm/processmanager.cpp:24:21: warning: \u2018Q_PID QProcess::pid() const\u2019 is deprecated: Use processId() instead [-Wdeprecated-declarations]

    24 | kill(p->pid(), SIGTERM);

    | ^

    In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QProcess:1,

    from ../../pushxx-pm/processmanager.hpp:5,

    from ../../pushxx-pm/processmanager.cpp:1:

    /usr/include/x86_64-linux-gnu/qt5/QtCore/qprocess.h:237:11: note: declared here

    237 | Q_PID pid() const;

    | ^~~

    ../../pushxx-pm/processmanager.cpp: In member function \u2018void ProcessManager::signal(int)\u2019:

    ../../pushxx-pm/processmanager.cpp:66:25: warning: \u2018Q_PID QProcess::pid() const\u2019 is deprecated: Use processId() instead [-Wdeprecated-declarations]

    66 | kill(p->pid(), SIGTERM);

    | ^

    In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QProcess:1,

    from ../../pushxx-pm/processmanager.hpp:5,

    from ../../pushxx-pm/processmanager.cpp:1:

    /usr/include/x86_64-linux-gnu/qt5/QtCore/qprocess.h:237:11: note: declared here

    237 | Q_PID pid() const;

    | ^~~

    ../../pushxx-pm/processmanager.cpp: In member function \u2018void ProcessManager::reloadChilds()\u2019:

    ../../pushxx-pm/processmanager.cpp:100:49: warning: \u2018Q_PID QProcess::pid() const\u2019 is deprecated: Use processId() instead [-Wdeprecated-declarations]

    100 | qInfo() << "Reloading Child " << p->pid();

    | ^

    In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QProcess:1,

    from ../../pushxx-pm/processmanager.hpp:5,

    from ../../pushxx-pm/processmanager.cpp:1:

    /usr/include/x86_64-linux-gnu/qt5/QtCore/qprocess.h:237:11: note: declared here

    237 | Q_PID pid() const;

    | ^~~

    ../../pushxx-pm/processmanager.cpp:102:21: warning: \u2018Q_PID QProcess::pid() const\u2019 is deprecated: Use processId() instead [-Wdeprecated-declarations]

    102 | kill(p->pid(), SIGHUP);

    | ^

    In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QProcess:1,

    from ../../pushxx-pm/processmanager.hpp:5,

    from ../../pushxx-pm/processmanager.cpp:1:

    /usr/include/x86_64-linux-gnu/qt5/QtCore/qprocess.h:237:11: note: declared here

    237 | Q_PID pid() const;

    | ^~~

    g++ -Wl,-O1 -o pushxx-pm main.o pmconfiguration.o configuration.o processmanager.o moc_pmconfiguration.o moc_configuration.o moc_processmanager.o ../sigwatch/libsigwatch.a /usr/lib/x86_64-linux-gnu/libQt5Core.so -lpthread

    make[1]: Verzeichnis \u201e/path/to/pushxx_src/build/pushxx-pm\u201c wird verlassen

  • Wenn das kompilieren ohne Probleme durch gelaufen ist, sollte das trotzdem funktionieren.

    Die Warnungen kannst du ignorieren ;)

    Die großen können sich unterscheiden, das ist normal und sollte in den meisten Fällen keinen unterschied machen. Es kommt immer drauf an wie das System kompiliert und natürlich was alles mit reingepackt wird oder als extern erwartet wird.

    Wir haben immer alles reingepackt was geht, wodurch die Datei größer wird, aber das ist nicht schlimm, wenn du es nur für dich verwendest.

  • Ich habe die neu kompilierte Datei jetzt einfach mal auf den Foren-Server kopiert und versucht zu starten aber es scheint dass genau die selben Pakete erwartet werden die ich zuvor auf der Build Maschine installiert hatte.

    Zitat

    error while loading shared libraries: libQt5WebSockets.so.5: cannot open shared object file: No such file or directory

    Das erklärt dann auch die Größe schätze ich mal.

  • Wichtig beim kompilieren ist, das die Server Version identisch sind, ansonsten kann es zu Fehlern kommen.

    Ansonsten kann ich dir nicht mal eben erklären wie man Sachen statisch oder dynamisch linkt das ist etwas was nicht mal eben gemacht werden kann.

    Da hoffe ich, das du verstehst das dies nur Leute machen sollten die auch wissen wie das funktioniert ;) das ist keine Änderung wo man nur ein config flag ändern muss.

  • Für Ubuntu 20.04:

    Code
    wget http://security.ubuntu.com/ubuntu/pool/main/i/icu/libicu60_60.2-3ubuntu3.2_amd64.deb
    apt install ./libicu60_60.2-3ubuntu3.2_amd64.deb
    
    
    apt install libdouble-conversion-dev
    sudo ln -s /usr/lib/x86_64-linux-gnu/libdouble-conversion.so.3 /usr/lib/x86_64-linux-gnu/libdouble-conversion.so.1

    Nur geht's dann noch nicht weiter:

    Daher musste ich die Datei /etc/systemd/system/pushxx.service bearbeiten und

    Code
    ExecStart=/usr/local/bin/pushxx

    ersetzen durch:

    Code
    ExecStart=/usr/local/bin/pushxx -c /etc/pushxx.conf


    So weit so gut. Nun ist es jedoch so, dass es trotzdem nicht funktioniert :P Laut Log werden zwar Token empfangen*, die Websocket-Verbindung aber direkt beim Aufrufen getrennt:

    *=

    Code
    Jan 23 06:25:43 server pushxx[10149]: Computing Hash for '  "token=xxx;secret=yyy" '
    Jan 23 06:25:43 server pushxx[10149]: [Message] Computed digest:  "7ddc8bd080f301e215b0e2d443ab3114f84b47266211814b743da5f13f3f9527"
    Jan 23 06:25:43 server pushxx[10149]: [Message] Expected digest:  "7ddc8bd080f301e215b0e2d443ab3114f84b47266211814b743da5f13f3f9527"
    Jan 23 06:25:43 server pushxx[10149]: [Socket Server] Token received:  "xxx"
    Jan 23 06:25:45 server pushxx[10149]: [Token Reaper] Removed  0  tokens in  25819  nanoseconds