2

我现在尝试了很多方法来安装当前 0.10.26 版本的 node.js。

该机器是安装了 Xubuntu 12.04 的 Arm Cortex A9:

lsb_release -a

给我:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.4 LTS
Release:        12.04
Codename:       precise

uname -a

给我:

Linux utilite-ubuntu-desktop 3.0.35-cm-fx6-4 #123 SMP Thu Sep 12 10:41:30 IST 2013 armv7l armv7l armv7l GNU/Linux

当我以简单的方式安装 node.js 时:

sudo apt-get install git-core curl build-essential openssl libssl-dev
sudo apt-get install python-software-properties
sudo apt-add-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs 

我最终得到了 node.js 版本

v0.6.12

在安装 node.js 期间,我得到以下输出:

The following NEW packages will be installed:
  nodejs
0 upgraded, 1 newly installed, 0 to remove and 3 not upgraded.
Need to get 0 B/629 kB of archives.
After this operation, 2186 kB of additional disk space will be used.
Selecting previously unselected package nodejs.
(Reading database ... 164415 files and directories currently installed.)
Unpacking nodejs (from .../nodejs_0.6.12~dfsg1-1ubuntu1_armel.deb) ...
Processing triggers for doc-base ...
Processing 1 added doc-base file...
Registering documents with scrollkeeper...
Processing triggers for man-db ...
Setting up nodejs (0.6.12~dfsg1-1ubuntu1) ...
update-alternatives: using /usr/bin/node to provide /usr/bin/js (js) in auto mode.

这是否意味着:“选择以前未选择的包 nodejs”他将再次安装以前安装的版本?或者他为什么不选择最新的版本?

无论如何,然后我几乎使用这条指令完全卸载了它: 如何完全卸载 Node.js,并从头开始重新安装(Mac OS X)

我找到了类似这样的指令(以下是我的情况):

sudo apt-get install nodejs=0.10.26-1chl1~precise1

但它只给了我:

E: Version '0.10.26-1chl1~precise1' for 'nodejs' was not found

所以我下载并安装了 nvm 版本 v0.5.1,当我这样做时

nvm install v0.10.26

我得到:

######################################################################## 100.0%
Checksums empty

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
Binary download failed, trying source.
Additional options while compiling:

######################################################################## 100.0%
{ 'target_defaults': { 'cflags': [],
                       'default_configuration': 'Release',
                       'defines': [],
                       'include_dirs': [],
                       'libraries': []},
  'variables': { 'arm_fpu': 'vfpv3',
                 'arm_neon': 0,
                 'armv7': 1,
                 'clang': 0,
                 'gcc_version': 46,
                 'host_arch': 'arm',
                 'node_install_npm': 'true',
                 'node_prefix': '/home/utilite/.nvm/v0.10.26',
                 'node_shared_cares': 'false',
                 'node_shared_http_parser': 'false',
                 'node_shared_libuv': 'false',
                 'node_shared_openssl': 'false',
                 'node_shared_v8': 'false',
                 'node_shared_zlib': 'false',
                 'node_tag': '',
                 'node_unsafe_optimizations': 0,
                 'node_use_dtrace': 'false',
                 'node_use_etw': 'false',
                 'node_use_openssl': 'true',
                 'node_use_perfctr': 'false',
                 'node_use_systemtap': 'false',
                 'python': '/usr/bin/python',
                 'target_arch': 'arm',
                 'v8_enable_gdbjit': 0,
                 'v8_no_strict_aliasing': 1,
                 'v8_use_arm_eabi_hardfloat': 'false',
                 'v8_use_snapshot': 'true'}}
creating  ./config.gypi
creating  ./config.mk
make -C out BUILDTYPE=Release V=1
make[1]: Entering directory `/home/utilite/.nvm/src/node-v0.10.26/out'
make[1]: Warning: File `/home/utilite/.nvm/src/node-v0.10.26/out/Release/.deps//home/utilite/.nvm/src/node-v0.10.26/out/Release/libv8_nosnapshot.a.d' has modification time 4.4e+04 s in the future
  LD_LIBRARY_PATH=/home/utilite/.nvm/src/node-v0.10.26/out/Release/lib.host:/home/utilite/.nvm/src/node-v0.10.26/out/Release/lib.target:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd ../deps/v8/tools/gyp; mkdir -p /home/utilite/.nvm/src/node-v0.10.26/out/Release/obj.target/v8_snapshot/geni; "/home/utilite/.nvm/src/node-v0.10.26/out/Release/mksnapshot" --log-snapshot-positions --logfile "/home/utilite/.nvm/src/node-v0.10.26/out/Release/obj.target/v8_snapshot/geni/snapshot.log" "/home/utilite/.nvm/src/node-v0.10.26/out/Release/obj.target/v8_snapshot/geni/snapshot.cc"
^Cmake[1]: *** [/home/utilite/.nvm/src/node-v0.10.26/out/Release/obj.target/v8_snapshot/geni/snapshot.cc]

它在那里循环运行,直到我点击 Cntrl C。不幸的是,在尝试使用 git 执行此操作时也会发生同样的情况:

git clone https://github.com/joyent/node.git

它编译然后挂在无限循环中(已经尝试了几个小时)。挂起的过程是mksnapshot。我在 V8 上发现了以下关于类似行为的问题:http ://code.google.com/p/v8/issues/detail? id=884 他们谈论 gcc 4.5.x,其中我的是 4.6.3。

因此,在这一点上,我不知道任何进一步的信息,并且会高度评价任何形式的帮助。看起来我的 linux 出了点问题,但我不知道从哪里开始。

非常感谢,

本杰明

4

4 回答 4

2

PPA 中的二进制文件适用于 x86/x86_64,而不是 ARM。您必须从源代码安装(或者如果需要,可以尝试预编译的Raspberry Pi 二进制文件)。

如果您从 git 克隆,则默认情况下会检出 master 分支,该分支是不稳定的。这是一个安装最新稳定版本的单行程序,您可以尝试改为:

rm -rf /tmp/node-install && mkdir /tmp/node-install && pushd . && cd /tmp/node-install && curl -L http://nodejs.org/dist/node-latest.tar.gz | tar zx && cd `ls | grep node` && ./configure && make && make install && popd && rm -rf /tmp/node-install
于 2014-04-29T19:04:18.530 回答
2

正如您在帖子中指定的那样,您正在运行在 ARM 处理器上运行的 Utilite 标准。我已经能够使 Node.js 工作,但您需要使用 ARM 处理器的自定义配置来编译源代码。

另外,我应该指出 0.10.26 版本不起作用,所以只需尝试使用 0.11.9 即可编译 Node 和 NPM。

这是我如何一步一步地安装它,抱歉,因为它是西班牙语,但你可以复制粘贴命令。

http://www.ibaivalencia.com/instalar-y-ejecutar-node-js-en-una-maquina-arm-con-linux/

于 2014-05-01T12:56:51.513 回答
2

尝试 ./configure --without-snapshot --dest-cpu=arm --dest-os=linux

于 2015-02-09T02:10:28.333 回答
0

我在需要 node.js 的“shiny-server”的 make 编译过程中遇到了这种问题(mksnapshot 期间的无限循环);在 ARM 处理器 (ODROID) 上。实际上,makefile 中 node.js 的版本是 0.10.40。回到 0.10.21 解决了这个问题。

于 2016-03-10T14:50:17.847 回答