Gestern kam mal wieder ein Update für NodeBB. Kleine Versionssprünge von 1.13.0 auf 1.13.1 sind normalerweise kein Problem, gestern gab es aber mal wieder was zu nachdenken
Da ich zwei Foren betreibe, habe ich das Update auf dem Forum getestet was nicht so viele Besucher hat Das war auch gut so. Ich melde mich also mit dem Forum User an, wechsle in das Verzeichnis und stoppe erst mal NodeBB.
./nodebb stop
Danach ein
./nodebb upgrade
Und dann kommt das.
Updating NodeBB...
1. Updating package.json file with defaults... OK
2. Bringing base dependencies up to date... started
> sharp@0.23.4 install /home/user_radforum/radforum/nodebb/node_modules/sharp
> (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
info sharp Using cached /home/user_radforum/.npm/_libvips/libvips-8.8.1-linux-x64.tar.gz
internal/modules/cjs/loader.js:638
throw err;
^
Error: Cannot find module './index'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/home/user_radforum/radforum/nodebb/node_modules/.bin/rc:2:10)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
gyp ERR! build error
gyp ERR! stack Error: not found: make
[...gekürzt...]
Ok, ein Problem Was können wir an der Ausgabe erkennen? Es wird versucht
sharp@0.23.4
zu installieren. Dazu wird eine Datei heruntergeladen. Das Log ist der zweite Versuch, das sieht man daran, das hier die gecachte Version benutzt wird zum Installieren.
info sharp Using cached
Im ersten Versuch wurde das Paket von hier heruntergeladen
https://github.com/lovell/sharp-libvips/releases/download/v8.8.1/libvips-8.8.1-linux-x64.tar.gz
Das ist jetzt nicht wirklich spannend, das Interessante kommt etwas später. Das hier hat meine Aufmerksamkeit bekommen.
gyp ERR! stack Error: not found: make
Ok, was passiert hier? Da wird offensichtlich ein Paket heruntergeladen, dieses muss aber erst gebaut werden!? Ok, das hatte ich, wenn ich mich recht erinnere, das Erste mal! Wenn ich nun das NodeBB-Forum auf einem Minimal System betreibe, sind solche Tools standardmäßig nicht installiert. Aber, installieren können wir ja
apt install make
Nächster Versuch
Error: Cannot find module './index'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/home/user_radforum/radforum/nodebb/node_modules/.bin/rc:2:10)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
make: Entering directory '/home/user_radforum/radforum/nodebb/node_modules/sharp/build'
TOUCH Release/obj.target/libvips-cpp.stamp
CXX(target) Release/obj.target/sharp/src/common.o
make: g++: Command not found
make: *** [sharp.target.mk:129: Release/obj.target/sharp/src/common.o] Error 127
make: Leaving directory '/home/user_radforum/radforum/nodebb/node_modules/sharp/build'
Gut, weiter installieren
apt install g++
Danach kommt diese Ausgabe.
make: Entering directory '/home/user_radforum/radforum/nodebb/node_modules/sharp/build'
TOUCH Release/obj.target/libvips-cpp.stamp
CXX(target) Release/obj.target/sharp/src/common.o
CXX(target) Release/obj.target/sharp/src/metadata.o
CXX(target) Release/obj.target/sharp/src/stats.o
CXX(target) Release/obj.target/sharp/src/operations.o
CXX(target) Release/obj.target/sharp/src/pipeline.o
CXX(target) Release/obj.target/sharp/src/sharp.o
CXX(target) Release/obj.target/sharp/src/utilities.o
SOLINK_MODULE(target) Release/obj.target/sharp.node
COPY Release/sharp.node
make: Leaving directory '/home/user_radforum/radforum/nodebb/node_modules/sharp/build'
Das Bauen von sharp hat also funktioniert.
Danach hatte ich aber noch folgendes Problem.
3. Checking installed plugins for updates... OK
A total of 2 package(s) can be upgraded:
* nodebb-plugin-2factor (2.6.1 -> 2.6.5)
* nodebb-plugin-question-and-answer (0.4.2 -> 0.6.3)
Proceed with upgrade (y|n)? n
Diese beiden Plugins kann ich aktuell nicht aktualisieren, weil das Fehler wirft. Ok, dann lasse ich das erstmal.... Habe es dann verneint, danach klappte alles und ich konnte das NodeBB-Forum wieder starten. Ich habe dazu im Forum von NodeBB auch mal einen Thread gestartet.
Ich kann mich nicht erinnern, mit kleinen Versionssprüngen so viele Probleme zu haben. Aber letztendlich konnte ich das Forum wenigstens wieder zum Laufen bekommen. Mit den zwei Plugins muss ich mich dann die nächsten Tage mal rumschlagen, aber aktuell funktioniert alles.
Und wenn sich nun jemand fragt, was oder wofür ist sharp überhaupt, das hatte ich mich auch gefragt.
The typical use case for this high speed Node.js module is to convert large images in common formats to smaller, web-friendly JPEG, PNG and WebP images of varying dimensions.
Resizing an image is typically 4x-5x faster than using the quickest ImageMagick and GraphicsMagick settings due to its use of libvips.