So I’m working on a project that will include a few Photons connecting to a Raspberry Pi B+/A+. So I can connect to the Photon through my PC’s Particle CLI, but I tried installing it onto my Raspberry Pi (using several techniques such as: the firections for installing the Particle CLI for Linux on the Particle documentation and following this tutorial.
I’ve successfully installed Node.js and npm and still am unable to get it to install properly because I always get errors like this:
@rsaiyid it is a little unclear what problem you’re encountering. However, I have vague recollection that the newer current raspberry pi kernel throws some new permissions hurdles, but somehow I was able to get particle-cli on the new kernel. So look through the error messages you receive for anything that says something like "does not have permission to write to " some directory, and then make a reasonable decision about changing that directory’s permission level if it seems safe to you to do so. Sorry I don’t have a clearer recollection. I did check my installation and see that serialport@2.0.6 does install on the pi. I’d suggest you first just fiddle around trying to just install serialport@2.0.6. Come to think of it, I think I needed to first install node-gyp separately (sudo npm install -g node-gyp , then later, sudo npm install -g serialport@2.0.6)
Hope that helps and sorry I don’e recall the exact steps.
Hey just wanted to update, I tried going through again and using serialport@2.0.6 and installing node -gyp before it. Unfortunately even that doesn’t seem to work.
I just noticed a permission error:
user "root" does not have permission to access the dev dir "/root/.node-gyp/0.12.6"
Also:
/usr/local/lib/node_modules/serialport
node -v > v0.12.6
node-gyp -v > v2.0.1
not ok
If you remember anything or know of a way to help me fix this error I’d greatly appreciate it.
@rsaiyid Possibly it’s the node version. I have node 4.2.1 installed on the pi 3. If you still have permission problems try using chmod; there’s lots of raspberry pi tutorials on how to use chmod.
I tried your instructions but I got even more errors than the other tutorials and it still didn’t work.
The error codes:
pi@raspberrypi:~ $ sudo npm install -g serialport@2.0.1 particle-cli
npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
/usr/local/bin/serialportlist -> /usr/local/lib/node_modules/serialport/bin/serialportList.js
/usr/local/bin/serialportterm -> /usr/local/lib/node_modules/serialport/bin/serialportTerminal.js
> serialport@2.0.1 install /usr/local/lib/node_modules/serialportnnn
> node-pre-gyp install --fallback-to-build
(node) child_process: options.customFds option is deprecated. Use options.stdio instead.
gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/4.2.1"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/usr/local/lib/node_modules/serialport/.node-gyp"
make: Entering directory '/usr/local/lib/node_modules/serialport/build'
CXX(target) Release/obj.target/serialport/src/serialport.o
CXX(target) Release/obj.target/serialport/src/serialport_unix.o
CXX(target) Release/obj.target/serialport/src/serialport_poller.o
SOLINK_MODULE(target) Release/obj.target/serialport.node
COPY Release/serialport.node
COPY /usr/local/lib/node_modules/serialport/build/serialport/v2.0.1/Release/node-v46-linux-arm/serialport.node
TOUCH Release/obj.target/action_after_build.stamp
make: Leaving directory '/usr/local/lib/node_modules/serialport/build'
> serialport@3.1.2 install /usr/local/lib/node_modules/particle-cli/node_modules/serialport
> node-pre-gyp install --fallback-to-build
node-pre-gyp ERR! Tried to download: https://github.com/voodootikigod/node-serialport/releases/download/3.1.2/serialport-v3.1.2-node-v46-linux-arm.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for serialport@3.1.2 and node@4.2.1 (node-v46 ABI) (falling back to source compile with node-gyp)
gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/4.2.1"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/usr/local/lib/node_modules/particle-cli/node_modules/serialport/.node-gyp"
make: Entering directory '/usr/local/lib/node_modules/particle-cli/node_modules/serialport/build'
make: *** No rule to make target '../.node-gyp/4.2.1/include/node/common.gypi', needed by 'Makefile'. Stop.
make: Leaving directory '/usr/local/lib/node_modules/particle-cli/node_modules/serialport/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.4.13-v7+
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/usr/local/lib/node_modules/particle-cli/node_modules/serialport/build/Release/serialport.node" "--module_name=serialport" "--module_path=/usr/local/lib/node_modules/particle-cli/node_modules/serialport/build/Release"
gyp ERR! cwd /usr/local/lib/node_modules/particle-cli/node_modules/serialport
gyp ERR! node -v v4.2.1
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/usr/local/lib/node_modules/particle-cli/node_modules/serialport/build/Release/serialport.node --module_name=serialport --module_path=/usr/local/lib/node_modules/particle-cli/node_modules/serialport/build/Release' (1)
node-pre-gyp ERR! stack at ChildProcess.<anonymous> (/usr/local/lib/node_modules/particle-cli/node_modules/serialport/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack at emitTwo (events.js:87:13)
node-pre-gyp ERR! stack at ChildProcess.emit (events.js:172:7)
node-pre-gyp ERR! stack at maybeClose (internal/child_process.js:818:16)
node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
node-pre-gyp ERR! System Linux 4.4.13-v7+
node-pre-gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/particle-cli/node_modules/serialport/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /usr/local/lib/node_modules/particle-cli/node_modules/serialport
node-pre-gyp ERR! node -v v4.2.1
node-pre-gyp ERR! node-pre-gyp -v v0.6.28
node-pre-gyp ERR! not ok
Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/usr/local/lib/node_modules/particle-cli/node_modules/serialport/build/Release/serialport.node --module_name=serialport --module_path=/usr/local/lib/node_modules/particle-cli/node_modules/serialport/build/Release' (1)
npm ERR! Linux 4.4.13-v7+
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "serialport@2.0.1" "particle-cli"
npm ERR! node v4.2.1
npm ERR! npm v2.14.7
npm ERR! code ELIFECYCLE
npm ERR! serialport@3.1.2 install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the serialport@3.1.2 install script 'node-pre-gyp install --fallback-to-build'.
npm ERR! This is most likely a problem with the serialport package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-pre-gyp install --fallback-to-build
npm ERR! You can get their info via:
npm ERR! npm owner ls serialport
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR! /home/pi/npm-debug.log
pi@raspberrypi:~ $
@Ben_is_best
It took some experimenting but I discovered the steps below work. There must have been some changes in the raspberry pi firmware or or relevant node modules or something.
{now make sure you are in the particle-cli folder and then delete the node_modules subfolder in particle-cli folder if it exists there }
{now open the package.json file in the particle-cli folder and change the line that reads “serialport”: “^2.0.1”, to read “serialport”: “2.0.1”, in other words remove the ^}
pi@raspberrypi:~/particle-cli $ sudo npm install -g
{don’t include the serialport@2.0.1 particle-cli part unlike the earlier instructions}
I discovered @mumblepins node install method: https://github.com/mumblepins/bluz-gateway and was able to install node 7 easily on an RPI3 and then afterwards particle-cli just as easily using npm install -g particle-cli
Thanks @mumblepins !
But I think it’s necessary to first run sudo apt-get remove --purge node nodejs beforehand if you have an earlier version
I installed node 7.4.0 but ran into permission errors witNPM install so used sudo to run the install and was greeted with fewer errors but found I didn’t have permission to write to node-gyp folder. It turns out that ‘sudo npm’ automatically sets --unsafe-perm to false making the location unwriteable… result: fail. So I ran `sudo npm install -g partical-cli --unsafe-perm --build-from-source" and got a working Serial and Particle-cli install with no errors.
yeah, particle-cli has a dependency on the Serial module, and there is no pre-compiled binary for Serial for the Raspberry Pi. Hence node-gyp tries to automatically build from source, and unsafe-perms flag raises it’s ugly head. It is actually documented as in the install guide for Serial (don’t ask me how I know!) … which of course everyone reads when installing particle-cli, don’t they?