Node.js †
公式 †
さくらインターネットスタンダードプランに git をインストール †
さくらインターネットレンタルサーバにGitをインストールするを参考に最新バージョンをインストール
https://curl.haxx.se/download/から最新版をダウンロード
wget https://curl.haxx.se/download/curl-7.49.1.tar.gz
最新のGitソースコードをインストール
https://github.com/git/git/archive/v2.9.1.tar.gz
「fatal: Unable to find remote helper for ‘https’」が出るので「--with-curl=/usr/local」をつける
cd ~/local/src wget https://github.com/git/git/archive/v2.9.1.tar.gz tar xjvf v2.9.1.tar.gz cd git-2.9.1/ gmake configure ./configure --prefix=$HOME/local --enable-pthreads=-pthread --with-curl=/usr/local gmake all install
さくらインターネットスタンダードプランにnodejsをインストール †
node.js v0.12.0 インストール レンタルサーバー さくらスタンダード編を参考にした。
root権限なしでNode.js、MongoDBをインストールする方法
環境変数を追加 †
.cshrc に下記を追加
setenv PATH ${PATH}:${HOME}/local/bin setenv NODE_PATH ${HOME}/local/lib/node_modules setenv NODE_MODULES ${HOME}/local/bin/node_modules setenv LD_LIBRARY_PATH setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${HOME}/local/lib
設定を反映させる。
source ~/.cshrc
libexecinfoをインストール †
wget ftp://ftp.tw.freebsd.org/pub/distfiles/libexecinfo-1.1.tar.bz2 tar yxvf libexecinfo-1.1.tar.bz2 cd libexecinfo-1.1 vi execinfo.c
81行目を次のように修正する
- (char **)cp = &(rval[size]); + cp = (char *)&(rval[size]);
setenv SRCCONF ~/usr/local/etc/src.conf make cp libexecinfo.* ~/local/lib/ cp execinfo.h ~/local/include/
https://nodejs.org/download/release/から最新版をダウンロード
今回はv0.12.15をダウンロード
cd ~/ mkdir -p local/src cd local/src wget https://nodejs.org/download/release/latest-v0.12.x/node-v0.12.15.tar.gz tar xvzf node-v0.12.15.tar.gz cd node-v0.12.15
vi deps/v8/tools/gyp/v8.gyp
['OS=="freebsd"', { 'include_dirs+': [ '${HOME}/local/include' ], 'link_settings': { 'include_dirs+': [ '${HOME}/local/include' ], 'libraries': [ '-L/usr/local/lib -lexecinfo', '-L/usr/local/lib -${HOME}/local/lib -lexecinfo', ]}, 'sources': [ '../../src/base/platform/platform-freebsd.cc', '../../src/base/platform/platform-posix.cc' ], } ],
下記コマンドでなぜかMD5のエラーが出るので、別でダウンロードして./deps に置く
./configure --with-intl=small-icu --download=all --prefix=$HOME/local
creating ./icu_config.gypi * ECMA-402 (Intl) support didn't find ICU in ./deps/icu.. <http://download.icu-project.org/files/icu4c/55.1/icu4c-55_1-src.zip> Fetch: : 0.0MB total, 0.0MB downloaded MD5: 0103b909e19ca9c6497a7ae696c16480 ./deps/icu4c-55_1-src.zip Expected: 4cddf1e1d47622fdd9de2cd7bb5001fd *MISMATCH* ** Corrupted ZIP? Delete ./deps/icu4c-55_1-src.zip to retry download. Cannot build Intl without ICU in ./deps/icu. (Fix, or disable with "--with-intl=none" )
deps/v8/src/platform-freebsd.cc を修正 †
vi deps/v8/src/platform-freebsd.cc
std::vector<OS::SharedLibraryAddress> OS::GetSharedLibraryAddresses() { - std::vector<SharedLibraryAddress> result; + std::vector<SharedLibraryAddress> address_result; static const int MAP_LENGTH = 1024; int fd = open("/proc/self/maps", O_RDONLY); - if (fd < 0) return result; + if (fd < 0) return address_result; while (true) { char addr_buffer[11]; addr_buffer[0] = '0'; @@ -156,10 +156,10 @@ std::vector<OS::SharedLibraryAddress> OS::GetSharedLibraryAddresses() { // There may be no filename in this line. Skip to next. if (start_of_path == NULL) continue; buffer[bytes_read] = 0; - result.push_back(SharedLibraryAddress(start_of_path, start, end)); + address_result.push_back(SharedLibraryAddress(start_of_path, start, end)); } close(fd); - return result; + return address_result; }
deps/v8/src/base/platform/platform-posix.ccを修正 †
vi deps/v8/src/platform-freebsd.cc
@@ -328,7 +328,7 @@ int OS::GetCurrentThreadId() { #elif V8_OS_ANDROID return static_cast<int>(gettid()); #else - return static_cast<int>(pthread_self()); + return static_cast<int> ((int64_t) (void *) pthread_self()); #endif }
nodejsをインストール †
./configure --with-intl=small-icu --download=all --prefix=$HOME/local gmake gmake install