centos6.xでnodejs4.xを利用する
1.問題点
先に問題点を上げておく
- centosの標準のg++のバージョンが古いのでコンパイルできない(gcc4.8以降必須)
- gcc4.8でコンパイルして作ったrpmをgcc4.8を入れていないマシンで動かすことはできる
- gcc4.8がインストールされていない環境ではnpmでモジュールをビルドできないので動かない可能性がある
- もうgccが古いのでcentos7に移行する選択肢も考えよう
2.リポジトリからyumでインストールする場合
nodesourceのリポジトリからインストールする
curl -sL https://rpm.nodesource.com/setup_4.x | bash -
yum install -y nodejs gcc-c++ make
curl -sL https://rpm.nodesource.com/setup_4.x | bash -
yum install -y nodejs gcc-c++ make
後述するnpmで問題がでるのでgccの新しいバージョンをインストールする
yum install -y wget
wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo
yum install -y devtoolset-2-gcc devtoolset-2-gcc-c++ devtoolset-2-binutils
3.自分でrpmをビルドする場合
ビルド環境をインストールする
gcc4.8(devtoolsets-2)をインストール
curl http://people.centos.org/tru/devtools-2/devtools-2.repo > /etc/yum.repos.d/devtools-2.repo
yum install -y devtoolset-2-gcc devtoolset-2-gcc-c++ devtoolset-2-binutils
ビルドに必要なツールをインストールする
yum install -y centos-release-SCL
yum install -y python27
yum install -y yum-utils rpmdevtools make git
rpmを作成する
curl http://people.centos.org/tru/devtools-2/devtools-2.repo > /etc/yum.repos.d/devtools-2.repo
yum install -y devtoolset-2-gcc devtoolset-2-gcc-c++ devtoolset-2-binutils
yum install -y centos-release-SCL
yum install -y python27
yum install -y yum-utils rpmdevtools make git
kazuhisyaさんがgithubで公開しているrpm作成ツールを使うのが簡単。
git clone -b LTS https://github.com/kazuhisya/nodejs-rpm.git
cd nodejs-rpm
yum-builddep ./nodejs.spec
scl enable python27 devtoolset-2 'make rpm'
※ビルドに時間が相当かかります
rpmのインストール
cd ./dist/RPMS/x86_64/
yum install -y nodejs-4.1.2-1.el6.x86_64.rpm nodejs-npm-4.1.2-1.el6.x86_64.rpm
4.npmを使う場合の注意点
以下のようにインストール指定する
scl enable devtoolset-2 "npm install bufferutil"
指定しない場合のエラー
../src/bufferutil.cc:114: error: variable or field ‘init’ declared void
../src/bufferutil.cc:114: error: ‘Handle’ was not declared in this scope
../src/bufferutil.cc:114: error: expected primary-expression before ‘>’ token
../src/bufferutil.cc:114: error: ‘target’ was not declared in this scope
../src/bufferutil.cc:120: error: ‘init’ was not declared in this scope
../src/bufferutil.cc:120: error: too many initializers for ‘node::node_module’
In file included from ../src/bufferutil.cc:16:
../node_modules/nan/nan.h: In function ‘void Nan::SetMethod(const T&, const char*, void (*)(const Nan::FunctionCallbackInfo<v8::Value>&)) [with T = v8::Local<v8::FunctionTemplate>]’:
../src/bufferutil.cc:30: instantiated from here
../node_modules/nan/nan.h:1829: error: ‘GetFunction’ was not declared in this scope
make: *** [Release/obj.target/bufferutil/src/bufferutil.o] エラー 1
make: ディレクトリ `/root/node_modules/bufferutil/build' から出ます
Author And Source
この問題について(centos6.xでnodejs4.xを利用する), 我々は、より多くの情報をここで見つけました https://qiita.com/you21979@github/items/163c5c8a009b00d85ebb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .