NEWS
[How-to] Node.js für ioBroker richtig updaten
-
In diesem Post wollen wir Problemfälle bei "npm rebuild sammeln und deren Lösungen.
1.) Binäre Dateien existieren, aber nicht als Link wie erwartet; manuelles löschen erforderlich
Bei Fehlern wie:npm ERR! path /opt/iobroker/node_modules/.bin/iobroker npm ERR! code EEXIST npm ERR! Refusing to delete /opt/iobroker/node_modules/.bin/iobroker: is outside /opt/iobroker/node_modules/iobroker.js-controller and not a link npm ERR! File exists: /opt/iobroker/node_modules/.bin/iobroker npm ERR! Move it away, and try again.
einfach das machen was da steht und die in der Meldung genannte Datei einfach löschen und "npm rebuild" neu starten. Diese Probleme können passieren wenn das node_modules Verzeichnis mal kopiert wurde, weil dabei (wenn man nicht die korrekten Parameter nutzt) symbolische Links entfernt werden und das macht Probleme.
2.) Permission/Rechte-Fehler
Bei Meldungen mit einem "EACCESS" als Fehlercode oder "Permission denied" am besten den Installationfixer laufen lassen (siehe erster Beitrag im Thread, Punkt 4). Das npm rebuild nicht mit sudo oder als root Nutzer ausführen.Wenn die Fehler in Verzeichnissen wie "/root/.npm/..." oder /home/user/.npm/..." auftreten dann diese Verzeichnisse einfach löschen und neu versuchen. Dann haben frühere Aktionen wohl das Cache-Verzeichnis kaputt gemacht.
3.) npm rebuild Fehler mit "unix-dgram 0.2.3" (js-controller 1.x mit Node.js 10/12)
Es ist ein Problemkandidat bekannt der bei "npm rebuild" zu einem Fehler führt, wodurch npm rebuild abbricht.> unix-dgram@0.2.3 install C:\Program Files\iobroker\SmartHome76\node_modules\unix-dgram > node-gyp rebuild c:\program files\iobroker\smarthome76\node_modules\unix-dgram\node_modules\nan\nan_maybe_43_inl.h(88): error C2039: "Fo rceSet": Ist kein Element von "v8::Object" (Quelldatei wird kompiliert ..\src\unix_dgram.cc) [C:\Program Files\iobroker \SmartHome76\node_modules\unix-dgram\build\unix_dgram.vcxproj]
In dem speziellen Fall hilft nur eine drastische Methode:
Im Verzeichnis node_modules/iobroker.js-controller/ folgendes ausführen:npm i unix-dgram@2.0.3
Danach "npm rebuild" nochmals anstossen.
4.) Fehler in npm-cache Verzeichnis*
Es kann hier und da vorkommen das sich mal defekte Dateien im npm Cache Verzeichnis festgesetzt haben, das gibt das Fehler wie beispielsweise:npm ERR! Unexpected end of JSON input while parsing near '...1f861b63850035ddc87",'
meistens dann bei Dateien in "/home/user/.npm/_cacache" (o.ä. Verzeichnissen mit "cache" im Namen). Dann hilft ggf ein
npm cache clean --force
oder das löschen dieses Verzeichnisses. Das npm Cache wird neu aufgebaut, was also etwas länger dauern kann.
5.) defekte Adapter-Installationen beheben
Es kann ebenso vorkommen das Adapter funktionieren aber ggf beim rebuild Probleme festgestellt werden. Meistens ist es das dann Dateien oder Abhängigkeiten fehlen. Das könnte zB so aussehen:npm ERR! path /opt/iobroker/node_modules/iobroker.discovery/node_modules/@types/iobroker/package.json npm ERR! code ENOENT npm ERR! errno -2 npm ERR! syscall open npm ERR! enoent ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.discovery/node_modules/@types/iobroker/package.json' npm ERR! enoent This is related to npm not being able to find a file. npm ERR! enoent
Das wurde auch schon beim Javascript Adapter bezüglich dem Paket "uuid" berichtet.
Dann hilft es meistens den Adapter manuell in der gleichen Version wie vorhanden nochmals" drüber zu installieren. Wenn man die Version nicht weiss kann man im Adapterverzeichnis unter node_modules/iobroker.adaptername/package.json nachsehen was als Version drin steht.
Dann im ioBroker Verzeichnis ein
npm install iobroker.adaptername@version --production
ausführen.
Danach nochmals "npm rebuild".
-
Und in diesem Post sammeln wir Lösungen, wenn man Node.js manuell vollständig löschen möchte.
Debian/Ubuntu/Raspbian
sudo apt-get purge -y nodejs npm nodejs-legacy sudo apt -y autoremove sudo rm /etc/sources.list.d/nodesource.list sudo apt-get update sudo rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node* /usr/local/lib/dtrace/node.d ~/.npm ~/.node-gyp /opt/local/bin/node /opt/local/include/node /opt/local/lib/node_modules sudo rm -rf /usr/local/lib/node* sudo rm -rf /usr/local/include/node* sudo rm -rf /usr/local/bin/node*
Das Warn- und Fehlermeldungen bei der Prozedur angezeigt werden ist ok.
Anschließend den Rechner neu starten (Befehl
sudo reboot
) und mitnode -v
undnpm -v
die erhofften "nicht gefunden"-Fehlermeldungen ansehen.Windows
Das folgende Vorgehen ist bei der neuen ioBroker-Installation nicht relevant, da dort für jede Instanz ein lokales und für ioBroker abgestimmtes Node.js installiert wird.
- Öffne eine Kommandozeile als Administrator und führe den folgenden Befehl aus:
npm cache clean --force
- Dann deinstalliere Node.js über die Systemsteuerung -> Apps mit dem Node.js-Uninstaller
- Rechner neu starten
- Die folgenden Ordner mit Inhalt löschen. Abhängig von der OS-, CPU-, Node.js- oder anderen Einstellungen kann es sein, dass davon welche fehlen.
C:\Program Files (x86)\Nodejs C:\Program Files\Nodejs C:\Users\{User}\AppData\Roaming\npm C:\Users\{User}\AppData\Roaming\npm-cache C:\Users\{User}\.npmrc C:\Users\{User}\AppData\Local\Temp\npm-*
- Jetzt die %PATH%-Umgebungsvariable auf npm-, node- oder nodejs-Einträge prüfen. Diese ggf. entfernen.
- Mit
node -v
prüfen, ob jetzt Node.js fehlt. Wenn es immer noch da ist, kann mit dem Kommandowhere node
Node.js gesucht werden. Dann die Ordner in denen dienode.exe
noch steht komplett mit Inhalt löschen. - Reboot tut gut.
- Öffne eine Kommandozeile als Administrator und führe den folgenden Befehl aus:
-
ich hatte mal das problem , dass ein downgrade von node 10 auf 8 nicht funktionierte, weil falsche werte in
apt-cache policy nodejs
standen - kennst du das problem - weißt du wie man das professionell lösen kann - ich frage, weil ich nicht weiß, ob ich wieder auf node10 mit dieser einstellung komme
dabei geht es um die installations-priorität von nodejs. ich habe die priorität irgendwie auf 1002 ändern können - danach gings (vorher stand 100 an der stelle und der downgrade ging nicht
ich denke, der nächste befehl wäre auch manchmal hilfreich, wenn man in den "unter-versionen" wechseln möchte
apt-get install nodejs=6.14.1-1nodesource1
das inodesource1 kommt im letzten bild vor.
-
Du hast wahrscheinlich damals in der Datei
/etc/apt/preferences
in etwa folgendes eingetragen:Package: * Pin: origin deb.nodesource.com Pin-Priority: 1002
Das nennt sich pinning. Damit sagst Du, dass bei gleichen Paketen die Quelle „deb.nodesource.com“ für Dich wichtiger ist als das, was aus dem Debian- oder Ubuntu-Repository kommt.
Ich sehe diesbezüglich kein Problem, Node.js 10 zu verwenden.
-
@Stabilostick ja genau - so habe ich es gemacht
irgendwann werd ich node 10 wieder ausprobieren - bin froh, das jetzt alles wieder stabil ist - node 8.16, js 1.5.11
-
Ich hatte auch Probleme beim Update von 8.15 auf 10.16.. Folgender Fehler kam bei mir hoch, egal ob ich bei Step 3, a, b oder c ausgeführt habe.
npm ERR! Unexpected end of JSON input while parsing near '...1f861b63850035ddc87",'
Bei mir hat dann nur folgendes geholfen:
npm cache clean --force
und danach habe ich Step 3c ausgeführt. Seit dem läuft das System wunderbar!
-
@Stuebi
Das sieht aus als ob der download defekt war, aber leider im cache blieb. -
@Homoran , ich konnte einige Adapter auch nicht mehr installieren. Da kam immer der JSON input Fehler. Jetzt läuft das System wieder.
-
wechsel von v8.16 auf v10.16
- Versuch, nachdem einige Adapter nicht mehr liefen "Dash, BLuetooth"
hab danach iobroker gestartet, bekam aber "Bluetooth und Dash" nicht mehr zum laufen, bzw weiss nicht genau wie
und bevor ich was kaputt mache, frage ich lieberAktuell stehe ich hier
ein npm rebuild ergibt folgendesroot@IoBroker:/opt/iobroker# npm rebuild > bluetooth-hci-socket@0.5.1 install /opt/iobroker/node_modules/bluetooth-hci-socket > node-gyp rebuild make: Verzeichnis „/opt/iobroker/node_modules/bluetooth-hci-socket/build“ wird betreten CXX(target) Release/obj.target/binding/src/BluetoothHciSocket.o ../src/BluetoothHciSocket.cpp: In member function ‘void BluetoothHciSocket::poll()’: ../src/BluetoothHciSocket.cpp:251:95: warning: ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)’ is deprecated [-Wdeprecated-declarations] Nan::MakeCallback(Nan::New<Object>(this->This), Nan::New("emit").ToLocalChecked(), 2, argv); ^ In file included from ../src/BluetoothHciSocket.cpp:8:0: ../../nan/nan.h:950:46: note: declared here NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback( ^~~~~~~~~~~~ ../src/BluetoothHciSocket.cpp: In member function ‘void BluetoothHciSocket::emitErrnoError()’: ../src/BluetoothHciSocket.cpp:275:72: error: no matching function for call to ‘v8::Function::NewInstance(int, v8::Local<v8::Value> [1])’ Local<Value> error = errorConstructor->NewInstance(1, constructorArgs); ^ In file included from /root/.node-gyp/10.16.0/include/node/node.h:63:0, from /root/.node-gyp/10.16.0/include/node/node_buffer.h:25, from ../src/BluetoothHciSocket.cpp:7: /root/.node-gyp/10.16.0/include/node/v8.h:3993:44: note: candidate: v8::MaybeLocal<v8::Object> v8::Function::NewInstance(v8::Local<v8::Context>, int, v8::Local<v8::Value>*) const V8_WARN_UNUSED_RESULT MaybeLocal<Object> NewInstance( ^~~~~~~~~~~ /root/.node-gyp/10.16.0/include/node/v8.h:3993:44: note: candidate expects 3 arguments, 2 provided /root/.node-gyp/10.16.0/include/node/v8.h:3996:44: note: candidate: v8::MaybeLocal<v8::Object> v8::Function::NewInstance(v8::Local<v8::Context>) const V8_WARN_UNUSED_RESULT MaybeLocal<Object> NewInstance( ^~~~~~~~~~~ /root/.node-gyp/10.16.0/include/node/v8.h:3996:44: note: candidate expects 1 argument, 2 provided ../src/BluetoothHciSocket.cpp:282:93: warning: ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)’ is deprecated [-Wdeprecated-declarations] Nan::MakeCallback(Nan::New<Object>(this->This), Nan::New("emit").ToLocalChecked(), 2, argv); ^ In file included from ../src/BluetoothHciSocket.cpp:8:0: ../../nan/nan.h:950:46: note: declared here NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback( ^~~~~~~~~~~~ ../src/BluetoothHciSocket.cpp: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE BluetoothHciSocket::BindRaw(Nan::NAN_METHOD_ARGS_TYPE)’: ../src/BluetoothHciSocket.cpp:395:34: warning: ‘int64_t v8::Value::IntegerValue() const’ is deprecated: Use maybe version [-Wdeprecated-declarations] devId = arg0->IntegerValue(); ^ In file included from /root/.node-gyp/10.16.0/include/node/v8.h:26:0, from /root/.node-gyp/10.16.0/include/node/node.h:63, from /root/.node-gyp/10.16.0/include/node/node_buffer.h:25, from ../src/BluetoothHciSocket.cpp:7: /root/.node-gyp/10.16.0/include/node/v8.h:2476:46: note: declared here V8_DEPRECATED("Use maybe version", int64_t IntegerValue() const); ^ /root/.node-gyp/10.16.0/include/node/v8config.h:324:3: note: in definition of macro ‘V8_DEPRECATED’ declarator __attribute__((deprecated(message))) ^~~~~~~~~~ ../src/BluetoothHciSocket.cpp: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE BluetoothHciSocket::BindUser(Nan::NAN_METHOD_ARGS_TYPE)’: ../src/BluetoothHciSocket.cpp:417:34: warning: ‘int64_t v8::Value::IntegerValue() const’ is deprecated: Use maybe version [-Wdeprecated-declarations] devId = arg0->IntegerValue(); ^ In file included from /root/.node-gyp/10.16.0/include/node/v8.h:26:0, from /root/.node-gyp/10.16.0/include/node/node.h:63, from /root/.node-gyp/10.16.0/include/node/node_buffer.h:25, from ../src/BluetoothHciSocket.cpp:7: /root/.node-gyp/10.16.0/include/node/v8.h:2476:46: note: declared here V8_DEPRECATED("Use maybe version", int64_t IntegerValue() const); ^ /root/.node-gyp/10.16.0/include/node/v8config.h:324:3: note: in definition of macro ‘V8_DEPRECATED’ declarator __attribute__((deprecated(message))) ^~~~~~~~~~ binding.target.mk:101: die Regel für Ziel „Release/obj.target/binding/src/BluetoothHciSocket.o“ scheiterte make: *** [Release/obj.target/binding/src/BluetoothHciSocket.o] Fehler 1 make: Verzeichnis „/opt/iobroker/node_modules/bluetooth-hci-socket/build“ wird verlassen gyp ERR! build error gyp ERR! stack Error: `make` failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23) gyp ERR! stack at ChildProcess.emit (events.js:198:13) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12) gyp ERR! System Linux 4.9.0-9-amd64 gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /opt/iobroker/node_modules/bluetooth-hci-socket gyp ERR! node -v v10.16.0 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! bluetooth-hci-socket@0.5.1 install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the bluetooth-hci-socket@0.5.1 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2019-06-02T09_24_04_396Z-debug.log root@IoBroker:/opt/iobroker#
-
@crunchip Genau den Fehler habe ich auch mit npm rebuild als root.
Wenn ich npm rebuild als user iobroker ausführe bekomme ich folgende Fehler:
iobroker@BT3-PRO:/opt/iobroker$ npm rebuild npm ERR! path /root/.npm/_logs npm ERR! code EACCES npm ERR! errno -13 npm ERR! syscall scandir npm ERR! Error: EACCES: permission denied, scandir '/root/.npm/_logs' npm ERR! { [Error: EACCES: permission denied, scandir '/root/.npm/_logs'] npm ERR! stack: npm ERR! 'Error: EACCES: permission denied, scandir \'/root/.npm/_logs\'', npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'scandir', npm ERR! path: '/root/.npm/_logs' } npm ERR! npm ERR! The operation was rejected by your operating system. npm ERR! It is likely you do not have the permissions to access this file as the current user npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the npm ERR! permissions of the file and its containing directories, or try running npm ERR! the command again as root/Administrator (though this is not recommended). glob error { [Error: EACCES: permission denied, scandir '/root/.npm/_logs'] stack: 'Error: EACCES: permission denied, scandir \'/root/.npm/_logs\'', errno: -13, code: 'EACCES', syscall: 'scandir', path: '/root/.npm/_logs' } > @abandonware/noble@1.9.2-2 install /opt/iobroker/node_modules/@abandonware/noble > node-gyp rebuild gyp WARN EACCES user "iobroker" does not have permission to access the dev dir "/root/.node-gyp/10.16.0" gyp WARN EACCES attempting to reinstall using temporary dev dir "/tmp/.node-gyp" make: Verzeichnis â/opt/iobroker/node_modules/@abandonware/noble/buildâ wird betreten SOLINK_MODULE(target) Release/obj.target/noble.node COPY Release/noble.node make: Verzeichnis â/opt/iobroker/node_modules/@abandonware/noble/buildâ wird verlassen > iobroker@2.0.2 install /opt/iobroker/node_modules/iobroker > node lib/checkVersions.js NPM version: 6.9.0 > iobroker@2.0.2 postinstall /opt/iobroker/node_modules/iobroker > node lib/install.js lib/install.js is not being run as part of an installation - skipping... > @serialport/bindings@2.0.8 install /opt/iobroker/node_modules/iobroker.discovery/node_modules/@serialport/bindings > prebuild-install --tag-prefix @serialport/bindings@ || node-gyp rebuild [...] Installing NodeJS typings... Could not install NodeJS typings. This is not critical. Reason: npm ERR! path /root/.npm/_logs npm ERR! code EACCES npm ERR! errno -13 npm ERR! syscall scandir npm ERR! Error: EACCES: permission denied, scandir '/root/.npm/_logs' npm ERR! { [Error: EACCES: permission denied, scandir '/root/.npm/_logs'] npm ERR! stack: npm ERR! 'Error: EACCES: permission denied, scandir \'/root/.npm/_logs\'', npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'scandir', npm ERR! path: '/root/.npm/_logs' } npm ERR! npm ERR! The operation was rejected by your operating system. npm ERR! It is likely you do not have the permissions to access this file as the current user npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the npm ERR! permissions of the file and its containing directories, or try running npm ERR! the command again as root/Administrator (though this is not recommended). glob error { [Error: EACCES: permission denied, scandir '/root/.npm/_logs'] stack: 'Error: EACCES: permission denied, scandir \'/root/.npm/_logs\'', errno: -13, code: 'EACCES', syscall: 'scandir', path: '/root/.npm/_logs' } npm ERR! path /root/.npm/_cacache/index-v5/fc/ee/fc3e1dd6706bd557d2840d92ff10cdd6928b92fb8c46d2195dfbd8d4b2be npm ERR! code EACCES npm ERR! errno -13 npm ERR! syscall open npm ERR! Error: EACCES: permission denied, open '/root/.npm/_cacache/index-v5/fc/ee/fc3e1dd6706bd557d2840d92ff10cdd6928b92fb8c46d2195dfbd8d4b2be' npm ERR! { [Error: EACCES: permission denied, open '/root/.npm/_cacache/index-v5/fc/ee/fc3e1dd6706bd557d2840d92ff10cdd6928b92fb8c46d2195dfbd8d4b2be'] npm ERR! cause: npm ERR! { Error: EACCES: permission denied, open '/root/.npm/_cacache/index-v5/fc/ee/fc3e1dd6706bd557d2840d92ff10cdd6928b92fb8c46d2195dfbd8d4b2be' npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'open', npm ERR! path: npm ERR! '/root/.npm/_cacache/index-v5/fc/ee/fc3e1dd6706bd557d2840d92ff10cdd6928b92fb8c46d2195dfbd8d4b2be' }, npm ERR! isOperational: true, npm ERR! stack: npm ERR! 'Error: EACCES: permission denied, open \'/root/.npm/_cacache/index-v5/fc/ee/fc3e1dd6706bd557d2840d92ff10cdd6928b92fb8c46d2195dfbd8d4b2be\'', npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'open', npm ERR! path: npm ERR! '/root/.npm/_cacache/index-v5/fc/ee/fc3e1dd6706bd557d2840d92ff10cdd6928b92fb8c46d2195dfbd8d4b2be' } npm ERR! npm ERR! The operation was rejected by your operating system. npm ERR! It is likely you do not have the permissions to access this file as the current user npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the npm ERR! permissions of the file and its containing directories, or try running npm ERR! the command again as root/Administrator (though this is not recommended). [...] (node:3600) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGINT listeners added. Use emitter.setMaxListeners() to increase limit npm ERR! path /root/.npm/_logs npm ERR! code EACCES npm ERR! errno -13 npm ERR! syscall scandir npm ERR! Error: EACCES: permission denied, scandir '/root/.npm/_logs' npm ERR! { [Error: EACCES: permission denied, scandir '/root/.npm/_logs'] npm ERR! stack: npm ERR! 'Error: EACCES: permission denied, scandir \'/root/.npm/_logs\'', npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'scandir', npm ERR! path: '/root/.npm/_logs' } npm ERR! npm ERR! The operation was rejected by your operating system. npm ERR! It is likely you do not have the permissions to access this file as the current user npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the npm ERR! permissions of the file and its containing directories, or try running npm ERR! the command again as root/Administrator (though this is not recommended). glob error { [Error: EACCES: permission denied, scandir '/root/.npm/_logs'] stack: 'Error: EACCES: permission denied, scandir \'/root/.npm/_logs\'', errno: -13, code: 'EACCES', syscall: 'scandir', path: '/root/.npm/_logs' } npm ERR! path /root/.npm/_cacache/index-v5/f6/d3/856f4e146dc3e8cb995652c4d6a1e16806d6bca7e87878fd9046e55ea74f npm ERR! code EACCES npm ERR! errno -13 npm ERR! syscall open npm ERR! Error: EACCES: permission denied, open '/root/.npm/_cacache/index-v5/f6/d3/856f4e146dc3e8cb995652c4d6a1e16806d6bca7e87878fd9046e55ea74f' npm ERR! { [Error: EACCES: permission denied, open '/root/.npm/_cacache/index-v5/f6/d3/856f4e146dc3e8cb995652c4d6a1e16806d6bca7e87878fd9046e55ea74f'] npm ERR! cause: npm ERR! { Error: EACCES: permission denied, open '/root/.npm/_cacache/index-v5/f6/d3/856f4e146dc3e8cb995652c4d6a1e16806d6bca7e87878fd9046e55ea74f' npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'open', npm ERR! path: npm ERR! '/root/.npm/_cacache/index-v5/f6/d3/856f4e146dc3e8cb995652c4d6a1e16806d6bca7e87878fd9046e55ea74f' }, npm ERR! isOperational: true, npm ERR! stack: npm ERR! 'Error: EACCES: permission denied, open \'/root/.npm/_cacache/index-v5/f6/d3/856f4e146dc3e8cb995652c4d6a1e16806d6bca7e87878fd9046e55ea74f\'', npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'open', npm ERR! path: npm ERR! '/root/.npm/_cacache/index-v5/f6/d3/856f4e146dc3e8cb995652c4d6a1e16806d6bca7e87878fd9046e55ea74f' } npm ERR! npm ERR! The operation was rejected by your operating system. npm ERR! It is likely you do not have the permissions to access this file as the current user npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the npm ERR! permissions of the file and its containing directories, or try running npm ERR! the command again as root/Administrator (though this is not recommended). npm ERR! code ELIFECYCLE npm ERR! errno 243 npm ERR! @abandonware/bluetooth-hci-socket@0.5.3-1 preinstall: `npm install node-pre-gyp` npm ERR! Exit status 243 npm ERR! npm ERR! Failed at the @abandonware/bluetooth-hci-socket@0.5.3-1 preinstall script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. iobroker@BT3-PRO:/opt/iobroker$
Hab schon den Install Fixer laufen lassen, aber der korrigiert ja nur alles unterhalb von /opt/iobroker.
Anscheinend will npm aber auch wenn es nicht als root ausgeführt wird in /root schreiben.
Aber am Ende taucht auch wieder "bluetooth-hci-socket" auf.
Ein Downgrad auf node 8.x hatte ich vor Wochen schon mal erfolglos probiert. Würde auch auf node 10 bleiben wollen, wenn ich die Probleme gelöst bekomme. -
@Diginix mit dem Install Fixer hab ich mich bis jetzt noch nicht befasst, bei mir läuft noch ne alte root Installation.
-
@crunchip
und genau für solche alten Installationen ist der Fixer gedacht. Es sind auch die Rechte des IOBroker User, was mit dem User root dann auch nicht viel gemeinsam hat. -
hi @Jan1
da mus sich mich mal einklinken - ich habe auch ein root-laufendes system und dachte immer der fixer ist für die leute, die mit sudo arbeiten . liege ich da falsch - muss ich das auch laufen lassen
-
@liv-in-sky
müssen musst Du gar nichts
Wie geschrieben, es wird der user IOBroker angelegt und da gabs Rechte Probleme, was eben nur bedingt was mit dem User root zu tun hat unter dem man IOBroker installiert hat.
Wie das aber wirklich genau zusammenhängt, kann Dir bestimmt @apollon77 erklären. Im Fixer Thread wird der Fixer eben empfohlen um eine einheitliche Installation zu haben. Ich habe auch unter root installiert und mit dem Fixer trotzdem schon das ein oder andere Problem lösen können. -
also so wie ich das bisher verstanden hatte, ist der Install Fixer dazu da, um das System sicherer zu machen, damit nicht alles über root läuft, sondern für die "normalen" Befehle der User angelegt wird.
Desweiteren kam/ kommt es vor das es bei dem ein oder anderen Adaptern zu Rechteprobleme kommt/kam.
Da ich mich aber mit der Materie nicht so gut auskenne, für was ich wo, wann und wie, den oder diesen Befehl benötige (und froh bin, das mein System endlich läuft), habe ich das bis heute nicht installiert, um zusätzliche Probleme zu vermeiden.
Bin Mechaniker und kein Programmierer -
@Jan1 erstmal danke für deine antwort
ich hab mal ein wenig gelesen - aber irgendwie werd ich nicht schlau draus.ich habe keine probleme mit meiner installation außer als ich node 10 hatte, da stürzte der js-controller immer wieder ab - ohne log einträge. es gab nur vom system selbst die meldung, das sigterm an js-contr gesendet wird.
glaubst du, dass mein node 10 problem vom fixer gelöst werden könnte oder hat das nix damit zu tun
-
@liv-in-sky
Also ich habe mit Node 10 bis auf das Problem, dass bei mir https nicht mehr läuft (kam unmittelbar nach der Installation von Node 10 und nem System reboot) absolut keine Error oder sonstige Fehler im Log und das bei 26 installierten Adaptern. Ich habe mir sogar angewöhnt ab und an mal den Fixer laufen zu lassen, wenn irgendwo ne Warnung auftaucht und bis jetzt fahre ich damit sehr gut. Heißt für mich dass der Fixer an meinem System auf alle Fälle mal nichts verschlimmert.Beim Fixer geht es hauptsächlich um Rechteprobleme und da werden auch Rechte, so wie @crunchip geschrieben hat nicht nur vergeben, sondern auch wieder auf das nötigste begrenzt damit das System sichere ist.
Ich würde auf alle Fälle mal ein Backup machen und dann den Fixer einfach mal laufen lassen, wenn danach im aller schlimmsten Fall nichts mehr geht, dann löscht man den IOBroker Ordner und installiert den nackten IOBroker samt dem Backitup Adapter und stellt das Backup wieder her. Dauert so 20 Minuten und alles ist wie vorher. So halte ich das und mein System läuft trotz massivem Basteln und ohne Testsystem -
Der Install Fixer hat bei mir keinerlei Besserung bzgl dem Problem von @crunchip und mir gebracht. Auch eine manuelle Kontrolle aller Permissions zeigt, dass alles ab /opt/iobroker auch dem user iobroker gehört. Außerdem hat dieser user bei mir "sudo ALL ALL" in /etc/sudoers.d/iobroker.
Ich bekomme aber sowohl mit nativem root user als auch mit einem der alles mit sudo darf Fehler bei "npm rebuild". Und darum geht es hier. Nicht um den Fixer.
-
@Diginix
Richtig und dann kam die Frage zum Fixer, die berechtigt war und wenn man hier einige Threads liest, auch so manchen Fehler ausbügelt, den man damit nicht gleich oder direkt in Verbindung bringt.Der Fixer ist ne tolle Sache, aber kein Allheilmittel, sollte aber eigentlich immer als erstes, weil am einfachsten anzuwenden, versucht werden. Das ist auch schon die ganze Kernaussage.
Wenn bei Dir rebuild nicht geht, dann probier doch mal reinstall. Die Doku ist derzeit nicht online, sonst hätte ich es gleich verlinkt.
-
@Jan1 da werd ich lieber ein proxmox backup machen und restoren falls etwas schief geht
aber wegen der sicherheit allein, mach ich jetzt erstmal nix - da keine probleme vorhanden - habe geraade admin adapter 3.6.3 gemacht - keine warnung - kein error
ich behalt den fixer mal im auge und les noch ein wenig darüber , falls in zukunft etwas sein sollte
danke dir