Node.js

公式

公式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

nodist

node.js インストール備忘録(windows7)


Last-modified: 2016-07-14 (木) 10:45:55 (646d)