我正在运行 Raspbmc,它正在运行基于 Debian 的最小 Linux 发行版。我想通过包管理器安装node.js,但我无法在我的系统上安装。它伴随着这个错误。
In file included from /usr/include/linux/kernel.h:4:0,
from /usr/include/arm-linux-gnueabihf/sys/sysinfo.h:25,
from ../deps/uv/src/unix/linux-core.c:34:
/usr/include/linux/sysinfo.h:8:2: error: unknown type name '__kernel_long_t'
/usr/include/linux/sysinfo.h:9:2: error: unknown type name '__kernel_ulong_t'
/usr/include/linux/sysinfo.h:10:2: error: unknown type name '__kernel_ulong_t'
/usr/include/linux/sysinfo.h:11:2: error: unknown type name '__kernel_ulong_t'
/usr/include/linux/sysinfo.h:12:2: error: unknown type name '__kernel_ulong_t'
/usr/include/linux/sysinfo.h:13:2: error: unknown type name '__kernel_ulong_t'
/usr/include/linux/sysinfo.h:14:2: error: unknown type name '__kernel_ulong_t'
/usr/include/linux/sysinfo.h:15:2: error: unknown type name '__kernel_ulong_t'
/usr/include/linux/sysinfo.h:18:2: error: unknown type name '__kernel_ulong_t'
/usr/include/linux/sysinfo.h:19:2: error: unknown type name '__kernel_ulong_t'
/usr/include/linux/sysinfo.h:21:22: error: '__kernel_ulong_t' undeclared here (not in a function)
make[1]: *** [/root/src/node-0.10.21/out/Release/obj.target/libuv/deps/uv/src/unix/linux-core.o] Error 1
make[1]: Leaving directory `/root/src/node-0.10.21/out'
make: *** [node] Error 2
我正在按照此步骤安装node.js
sudo apt-get install python g++ make checkinstall
mkdir ~/src && cd $_
wget -N http://nodejs.org/dist/node-latest.tar.gz
tar xzvf node-latest.tar.gz
mv node-v0.10.19 node-0.10.19
cd node-0.10.19
./configure
checkinstall --install=no
答案1
有点奇怪的错误,因为它位于系统头中。我认为 WRT 库完成了一些稍微奇怪的事情,并包含在 debian 派生的树莓派发行版中。如果您真的非常想要源代码构建,那么交叉编译可能会更好,因为这些怪癖不在 x-tool 环境中,而是在二进制文件中应该还在工作。
幸运的是,您可能也不必这样做。 Node.js 维护 pi 的二进制包(除其他外),0.10.19 是->这里<-。你要node-v0.10.19-linux-arm-pi.tar.gz
。
您不需要运行configure/make/etc 来使用该包。它已经为 pi 编译,并链接到 raspbian 中的库。干得好:
wget http://nodejs.org/dist/v0.10.19/node-v0.10.19-linux-arm-pi.tar.gz
tar 文件只有 5 MB。现在:
tar -xvf node-v0.10.19-linux-arm-pi.tar.gz
这会创建一个目录node-v0.10.19-linux-arm-pi
.在里面你会发现三个目录:
/bin
/lib
/share
二进制node
可执行文件位于bin
.我只是在 pi 上简单地尝试了一下(bin/node
),它可以执行一些简单的 js 命令,所以它可能一切都很好。1 您可以将所有内容保留原样并将其移动到您想要的任何位置,但您可能希望将该bin
目录添加到您的$PATH
.例如:
export PATH=/home/pi/node-v0.10.19-linux-arm-pi/bin:$PATH
添加它以~/.bashrc
使其持久。如果您想将节点作为系统服务运行,则必须创建一个脚本并进行一些其他配置——但这是另一个问题。
npm
bin 目录中还有一个指向节点包管理器的符号链接。该/lib
目录不需要位于系统库路径中,因为它只是节点模块,但您可能需要告诉节点它在哪里......我已经好几年没有使用节点了,对此无能为力。2 该/share
目录包含手册页;/usr/share/man
如果您想使用 正常访问它们,您可能需要将它们适当地复制到man
。3 或者,您可以将所有三个目录的内容复制到其对应部分/usr/local
并以这种方式使用。
1如果它不能立即对您起作用,请尝试ldd bin/node
。??
输出中应该没有。我相信所有必要的库都应该已经存在,除了libstdc++
.如果这就是问题所在,那就apt-get install libstdc++6
。
2使用和配置节点不是 pi 特定的任务,因此,如果您正在寻求这方面的帮助,最好在更通用的论坛中进行,例如:https://stackoverflow.com/它有很多 Node.js 用户。
3实际上只有一个手册页。您可以通过指定路径和文件名(例如man share/man/man1/node.1
.