*ruby1.9、gems2.5、yaml さくらのレンタルサーバ/スタンダードプランにruby1.9、gems2.5を入れて gem install できるようにする。 **元々のバージョン #highlight(){{ $ ruby -v ruby 1.8.7 (2012-10-12 patchlevel 371) [amd64-freebsd9] $ gem -v 1.8.25 }} **ディレクトリの用意、ソースの取得 #highlight(){{ $ cd $HOME/local $ mkdir src $ cd src $ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p448.tar.gz $ wget http://rubygems.org/rubygems/rubygems-2.5.0.tgz # rubyforge.orgは無くなった $ wget http://pyyaml.org/download/libyaml/yaml-0.1.5.tar.gz }} **パスの設定 $ emacs $HOME/.bashrc #highlight(){{ PATH=$HOME/local/bin:$HOME/local/lib/ruby/gems/bin:$PATH export RUBYLIB=$HOME/local/lib/ruby/site_ruby/1.9.3:$HOME/local/lib/ruby export GEM_HOME=$HOME/local/lib/ruby/gems }} $ source $HOME/.bashrc **yamlのインストール #highlight(){{ tar zxvf yaml-0.1.5.tar.gz cd yaml-0.1.5 ./configure --prefix=$HOME/local make && make install }} **ruby1.9のインストール #highlight(){{ cd $HOME/local/src tar xf ruby-1.9.3-p448.tar.gz cd ruby-1.9.3-p448 ./configure --prefix=$HOME/local --with-opt-dir=$HOME/local make && make install }} **gem2.5のインストール #highlight(){{ cd $HOME/local/src tar xf rubygems-2.5.0.tgz cd rubygems-2.5.0 ruby setup.rb }} **確認 #highlight(){{ $ ruby -v ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-freebsd9.1] $ gem -v 2.5.0 }} *jekyll2 と Node.js をインストール **jekyllをgemインストール $ gem install jekyll -v 2.5.3 (NoMethodError) undefined method `name' for #<RDoc::RubyToken::TkLPAREN:0x00000806dabc50> なんか RDoc のパーサーがエラー吐いてる $ gem install rdoc --pre Installing ri documentation for rdoc-4.2.0 $ gem install jekyll -v 2.5.3 今度は入った。 **PATHの追加 $ emacs ~/.bashrc export NODE_PATH=${HOME}/local/lib/node_modules export NODE_MODULES=${HOME}/local/bin/node_modules export LD_LIBRARY_PATH=${HOME}/local/lib export LD_RUN_PATH=${HOME}/local/lib $ source ~/.bashrc **libexecinfo をインストール node.js のビルドに libexecinfo が必要になるので #highlight(){{ $ cd $HOME/local/src $ wget http://pkg.freebsd.org/freebsd:9:x86:64/latest/All/libexecinfo-1.1_3.txz $ mkdir libexecinfo-1.1_3 $ tar xf libexecinfo-1.1_3.txz -C libexecinfo-1.1_3 $ cd libexecinfo-1.1_3 $ mv usr/local/include/* ~/local/include/ $ mv usr/local/lib/* ~/local/lib/ $ mv usr/local/share/doc/* ~/local/share/doc/ }} **Node.jsをインストール #highlight(){{ cd $HOME/local/src wget https://nodejs.org/download/release/v0.12.7/node-v0.12.7.tar.gz -- tar xf node-v0.12.7.tar.gz }} ***lexecinfoのパス指定 emacs node-v0.12.7/deps/v8/tools/gyp/v8.gyp #highlight(){{ ['OS=="freebsd"', { + 'include_dirs+': [ + '/home/アカウント名/local/include' + ], 'link_settings': { 'libraries': [ - '-L/usr/local/lib -lexecinfo', + '-L/usr/local/lib -L${HOME}/local/lib -lexecinfo', ]}, 'sources': [ '../../src/platform-freebsd.cc', }} ***platform-freebsd.ccコンパイルエラーの回避 emacs node-v0.12.7/deps/v8/src/base/platform/platform-freebsd.cc #highlight(){{ std::vector<OS::SharedLibraryAddress> OS::GetSharedLibraryAddresses() { 略 - std::vector result; + std::vector address_result; 略 - if (fd < 0) return result; + if (fd < 0) return address_result; 略 - result.push_back(SharedLibraryAddress(start_of_path, start, end)); + address_result.push_back(SharedLibraryAddress(start_of_path, start, end)); 略 - return result; + return address_result; }} ***platform-posix.cc コンパイルエラー回避 emacs node-v0.12.7/deps/v8/src/base/platform/platform-posix.cc #highlight(){{ int OS::GetCurrentThreadId() { #if V8_OS_MACOSX return static_cast<int>(pthread_mach_thread_np(pthread_self())); #elif V8_OS_LINUX return static_cast<int>(syscall(__NR_gettid)); #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 }} ***node.jsインストール #highlight(){{ cd node-v0.12.7 ./configure --with-intl=small-icu --download=all --prefix=$HOME/local gmake && gmake install }} **確認 $ jekyll -v jekyll 2.5.3