在CentOS 5上安装node.js

5
我是一个能翻译文本的助手。
我对CentOS(5)和node.js还比较陌生,但我已经在我的虚拟服务器上成功使用了旧版本的node.js 。 现在,我正在尝试安装新版本,我知道CentOS需要Python 2.4,而node需要2.6或更高版本,因此我使用altinstall安装了Python 2.7。
但即使我在运行./configure之前设置了指向版本2.7的Python别名,我仍然会遇到这个错误:
/root/node/wscript: error: Traceback (most recent call last):
  File "/root/node/tools/wafadmin/Utils.py", line 274, in load_module
    exec(compile(code, file_path, 'exec'), module.__dict__)
  File "/root/node/wscript", line 222
    "-pre" if node_is_release == "0" else ""
        ^
SyntaxError: invalid syntax

以下是 ./configure 的内容:

#! /bin/sh

# v8 doesn't like ccache
if [ ! -z "`echo $CC | grep ccache`" ]; then
  echo "Error: V8 doesn't like cache. Please set your CC env var to 'gcc'"
  echo "  (ba)sh: export CC=gcc"
  exit 1
fi

CUR_DIR=$PWD

#possible relative path
WORKINGDIR=`dirname $0`
cd "$WORKINGDIR"
#abs path
WORKINGDIR=`pwd`
cd "$CUR_DIR"

"${WORKINGDIR}/tools/waf-light" --jobs=1 configure $*

exit $?"

在wscript的顶部有以下一行代码: "#!/usr/bin/env python"。我也尝试用其他东西替换它,但我认为当使用Python别名时应该可以工作。

你有什么想法可以让这个工作起来吗?

谢谢!


看起来 ./configure 或者 wscript 仍在调用 Python2.4 而不是 Python2.7。你能展示一下 ./configure 如何调用 wscript 吗? - unutbu
1
为确保问题的来源,您可以打开wscript并在顶部添加import sys,然后跟随print sys.version,从而打印出实际用于执行的Python版本。(顺便说一句,正如您所发现的,CentOS/RHEL 5实际上相当古老;升级到6可能会节省很多麻烦。) - Nicholas Knight
谢谢,尼古拉斯。我不确定如何更新CentOS。正如我所提到的,我离真正熟悉它还有很远... - north
3个回答

5

我在Centos 5.x上安装了Python 2.7.3 'altinstalled',二进制文件名为"/usr/local/bin/python2.7"。

我使用以下命令编译和安装Nodejs v0.8.16:

PYTHON=/usr/local/bin/python2.7
export PYTHON
python2.7 configure && make && make install
  • 使用Python2.7运行configure会覆盖默认的Python处理方式。
  • 创建一个PYTHON环境变量可以让make install找到正确版本的Python。

(在安装成功之前,我仍然需要逐个识别和安装缺失的开发模块)


1
这个建议连同此处链接的安装脚本是纯金子;成功安装了py 2.7,然后又安装了node.js!双倍欢呼! - Kato

1

我在 bash_profile 中更改了 PATH,以包含所需 Python 版本的路径,如下所示:

vi ~/.bash_profile
替换 PATH=$PATH:$HOME/bin
使用 PATH=/usr/local/python272/bin:$PATH:$HOME/bin
source ~/.bash_profile
./configure
make

它会选择正确的 Python 版本。无需更改 wscript

我正在使用 CentOS 5.6,Python 2.7.2(安装在 /usr/local/python272),并使用 node.js 0.4.12


0
我遇到了完全相同的问题。最终我编辑了wscript文件并将该行(222)从这个改为了:
"-pre" if node_is_release == "0" else ""

...变成这样:

""

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接