tl;博士:我尝试在运行 Ubuntu 12.10(量子)的基于 ARMv7 的Cubox上安装 node.js。从源代码编译 node.js 时(请参阅下面的“第二次尝试”),node
会产生分段错误。我可以在这里做什么?
第一次尝试
首先,我尝试通过包管理器安装 node.js,遵循此处给出的 Ubuntu 说明:通过包管理器安装 Node.js:Ubuntu、Mint
添加那里提到的存储库sudo add-apt-repository ppa:chris-lea/node.js
似乎工作正常:
You are about to add the following PPA to your system:
Evented I/O for V8 javascript. Node's goal is to provide an easy way to build scalable network programs
More info: https://launchpad.net/~chris-lea/+archive/node.js
Press [ENTER] to continue or ctrl-c to cancel adding it
gpg: keyring `/tmp/tmpp0owib/secring.gpg' created
gpg: keyring `/tmp/tmpp0owib/pubring.gpg' created
gpg: requesting key C7917B12 from hkp server keyserver.ubuntu.com
gpg: /tmp/tmpp0owib/trustdb.gpg: trustdb created
gpg: key C7917B12: public key "Launchpad chrislea" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
OK
但是,sudo apt-get install nodejs
给了我错误:
E: Unable to locate package nodejs
我认为这是因为我有一个基于 ARM 的系统。据我从包的细节可以看出,repo 只包含 i386 和 amd64 的构建。我的假设对吗?
第二次尝试
所以我的下一个尝试是从源代码安装 node.js。我使用了以下要点中给出的说明:Node.js and NPM in 30 seconds。一切似乎都有效,包括make install
. 但是install.sh
要点最后一行的脚本执行失败,因为node
会产生分段错误。现在我想知道如何在我的机器上正确安装 node.js?
为了说明我的问题,这里有一些输出:
安装.sh 输出
这是install.sh
after running的输出make install
,如上面提到的 gist 安装说明中所述。
cyroxx@cubox:~/node-latest-install$ curl https://npmjs.org/install.sh | sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 7882 100 7882 0 0 11251 0 --:--:-- --:--:-- --:--:-- 14984
tar=/bin/tar
version:
tar (GNU tar) 1.26
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by John Gilmore and Jay Fenlason.
install npm@latest
fetching: http://registry.npmjs.org/npm/-/npm-1.2.21.tgz
Segmentation fault
Segmentation fault
You need node to run this program.
node --version reports: v0.10.7
Please upgrade node before continuing.
It failed
节点输出
cyroxx@cubox:~/node-latest-install$ node
Segmentation fault
进行调试构建
运行make
产生BUILDTYPE=Debug
这个输出:
cyroxx@cubox:~/node-latest-install$ make -C out BUILDTYPE=Debug
make: Entering directory `/home/cyroxx/node-latest-install/out'
CXX(target) /home/cyroxx/node-latest-install/out/Debug/obj.target/v8_base/deps/v8/src/arm/stub-cache-arm.o
../deps/v8/src/arm/stub-cache-arm.cc: In function 'void v8::internal::ProbeTable(v8::internal::Isolate*, v8::internal::MacroAssembler*, v8::internal::Code::Flags, v8::internal::StubCache::Table, v8::internal::Register, v8::internal::Register, v8::internal::Register, v8::internal::Register, v8::internal::Register, v8::internal::Register)':
../deps/v8/src/arm/stub-cache-arm.cc:106:15: error: comparison of unsigned expression < 0 is always false [-Werror=type-limits]
cc1plus: all warnings being treated as errors
make: *** [/home/cyroxx/node-latest-install/out/Debug/obj.target/v8_base/deps/v8/src/arm/stub-cache-arm.o] Error 1
make: Leaving directory `/home/cyroxx/node-latest-install/out'
这里有什么问题?这是 V8 的 ARM 实现中的错误吗?也许任何没有(正确)设置的编译器标志?还要别的吗?我完全被困住了。