终于有时间在树莓派上部署一个自己的小博客了,平时用惯了ubuntu,到了树莓派上,发现并没有那么简单。首先就是apt install nodejs,安装完没有npm。不过,经过一番折腾,便有了现在的小站点
安装nodejs
nodejs 可以使用源码编译和二进制包来安装。考虑到树莓派的处理能力,要编译一个nodejs,太过耗时。直接选用官网提供的二进制包完成安装
安装包获取
官网上ARM的bin包有3个,分别是v6,v7和v8。而树莓派的版本是v7
1 2 $ uname -a Linux raspberrypi 4.9.80-v7+
获取安装包
1 $ wget https://nodejs.org/dist/v8.10.0/node-v8.10.0-linux-armv7l.tar.xz
安装nodejs
解压缩
1 2 3 4 5 6 7 $ tar -Jxv -f node-v8.10.0-linux-armv7l.tar.xz node-v8.10.0-linux-armv7l/ node-v8.10.0-linux-armv7l/README.md node-v8.10.0-linux-armv7l/bin/ node-v8.10.0-linux-armv7l/bin/node node-v8.10.0-linux-armv7l/bin/npm ...
可根据个人喜好重命名文件夹,此处重命名为node,分别验证版本信息
1 2 3 4 pi@raspberrypi:~/node $ ./bin/node -v v8.10.0 pi@raspberrypi:~/node $ ./bin/npm -v 5.6.0
配置node和npm为全局命令
1 2 pi@raspberrypi:~/node $ sudo ln /home/pi/node/bin/node /usr/local /bin/node pi@raspberrypi:~/node $ sudo ln -s /home/pi/node/lib/node_modules/npm/bin/npm /usr/local /bin/npm
此时执行npm会报错
1 2 3 4 5 6 pi@raspberrypi:~/node $ npm -v module.js:471 throw err; ^ Error: Cannot find module '/usr/local/bin/node_modules/npm/bin/npm-cli.js'
需要修改/usr/local/bin/目录下的npm文件,将$basedir替换为绝对路径,此处为/home/pi/node/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #!/bin/sh (set -o igncr) 2>/dev/null && set -o igncr; # cygwin encoding fix basedir=`dirname "$0" ` case `uname` in *CYGWIN*) basedir=`cygpath -w "$basedir"`;; esac NODE_EXE="/home/pi/node/bin/node.exe" if ! [ -x "$NODE_EXE" ]; then NODE_EXE=node fi NPM_CLI_JS="/home/pi/node/lib/node_modules/npm/bin/npm-cli.js" case `uname` in *MINGW*) NPM_PREFIX=`"$NODE_EXE" "$NPM_CLI_JS" prefix -g` NPM_PREFIX_NPM_CLI_JS="$NPM_PREFIX/node_modules/npm/bin/npm-cli.js" if [ -f "$NPM_PREFIX_NPM_CLI_JS" ]; then NPM_CLI_JS="$NPM_PREFIX_NPM_CLI_JS" fi ;; *CYGWIN*) NPM_PREFIX=`"$NODE_EXE" "$NPM_CLI_JS" prefix -g` NPM_PREFIX_NPM_CLI_JS="$NPM_PREFIX/node_modules/npm/bin/npm-cli.js" if [ -f "$NPM_PREFIX_NPM_CLI_JS" ]; then NPM_CLI_JS="$NPM_PREFIX_NPM_CLI_JS" fi ;; esac "$NODE_EXE" "$NPM_CLI_JS" "$@"
再次验证,npm已经可以正常工作