CentOS 5 で node.js をソースからビルドすると npm でエラーがでる
CentOS 5 で nodejs をビルドしたら npm install で、
node: /lib64/libc.so.6: version `GLIBC_2.9' not found (required by node) node: /lib64/libc.so.6: version `GLIBC_2.6' not found (required by node) node: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by node)
というエラーが。
調べてみると node.jsインストール - ngtokuの日記 などのページが見つかった。
python のバージョンを上げれば何とかなりそう。
epel repo に python26 という package があるようなので、
yum install python26
でインストール。
これだけだと system python と同居する形になるので、
alias python=python26
で 2.6 を向くようにする。
./configure してみたら以下のようなエラーが。
./configure File "./configure", line 355 1 if options.unsafe_optimizations else 0) ^ SyntaxError: invalid syntax
if xxx else yyy のような記述は、python 2.5 からだそうで、
python26 を参照できていない模様。
alias はったのに。。。
configure を見てみると、
#!/usr/bin/env python -V
が。
これって、env 経由だと alias 効かないんじゃないかと思って、
同じように実行してみたところ、案の定 Python 2.4.3 と表示された。
ならば直接 python26 を使うようにすればいいのでは?ということで、
configure の 1行目を、
- #!/usr/bin/env python + #!/usr/bin/env python26
と書き換えて、実行してみたところ、
./configure --prefix=/usr/local/node-v0.8.15-linux-x64/ { 'target_defaults': { 'cflags': [], 'default_configuration': 'Release', 'defines': [], 'include_dirs': [], 'libraries': []}, 'variables': { 'clang': 0, 'gcc_version': 41, 'host_arch': 'x64', 'node_install_npm': 'true', 'node_install_waf': 'true', 'node_prefix': '/usr/local/node-v0.8.15-linux-x64/', 'node_shared_openssl': 'false', 'node_shared_v8': 'false', 'node_shared_zlib': 'false', 'node_unsafe_optimizations': 0, 'node_use_dtrace': 'false', 'node_use_etw': 'false', 'node_use_openssl': 'true', 'target_arch': 'x64', 'v8_no_strict_aliasing': 1, 'v8_use_snapshot': 'true'}} creating ./config.gypi creating ./config.mk
できた!
make
も通った!
しかし、
make install make -C out BUILDTYPE=Release V=1 make[1]: Entering directory `/tmp/node-v0.8.15/out' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/tmp/node-v0.8.15/out' ln -fs out/Release/node node python tools/install.py install File "tools/install.py", line 219 cmd = args[1] if len(args) > 1 else 'install' ^SyntaxError: invalid syntax make: *** [install] Error 1
は通らなかった。
今度も python のバージョンを指定できるといいなーと思いつつ、
Makefile を見てみるとそれっぽい記述が。
以下のように編集する。
# Makefile - PYTHON ?= python + PYTHON ?= python26
これで make install したらインストールできた!
ファイルを修正してバージョンを指定したので、
alias 意味ないかなーと思ったけど、alias 貼らないでもう一回やり直したらnpm でエラーがでた。
どこかで効力を発揮している模様。