tl;博士:我试图在运行Ubuntu 12.10(定量)的基于ARMv7的Cubox上安装node.js。从源代码编译node.js时(请参见下面的“第二次尝试”),node会产生分段错误。我在这里可以做什么?
node
首先,我尝试按照此处提供的针对Ubuntu的说明,通过软件包管理器安装node.js:通过软件包管理器安装Node.js:Ubuntu,Mint
使用此处添加提到的存储库sudo add-apt-repository ppa:chris-lea/node.js似乎可以正常工作:
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给我错误:
sudo apt-get install nodejs
E: Unable to locate package nodejs
我认为这是因为我有一个基于ARM的系统。据我从软件包详细信息中得知,该回购仅包含针对i386和amd64的构建。我的假设正确吗?
因此,我的下一个尝试是从源代码安装node.js。我使用了以下要点中给出的说明:30秒内完成Node.js和NPM。似乎一切正常,包括make install。但是install.sh,在要点的最后一行执行脚本失败,因为node会产生分段错误。现在我想知道如何在机器上正确安装node.js?
make install
install.sh
为了说明我的问题,这里是一些输出:
install.sh输出
这是install.sh运行后的输出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以下输出:
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实现中的错误吗?也许没有(正确)设置任何编译器标志?还要别的吗?我完全被困住了。
我在几台不同的ARM计算机上也遇到了这个问题。没有快照功能的编译对我来说很有效。快照是V8的一项功能,它允许节点更快地启动,而ARM似乎存在一个错误。
./configure --without-snapshot make sudo make install
http://www.armhf.com/index.php/node-js-for-the-beaglebone- black/