Ruby > さくらのレンタルサーバで gem install jekyll

ruby1.9、gems2.5、yaml

さくらのレンタルサーバ/スタンダードプランにruby1.9、gems2.5を入れて gem install できるようにする。

元々のバージョン

$ ruby -v
ruby 1.8.7 (2012-10-12 patchlevel 371) [amd64-freebsd9]
$ gem -v
1.8.25
 

ディレクトリの用意、ソースの取得

$ 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

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のインストール

tar zxvf yaml-0.1.5.tar.gz
cd yaml-0.1.5
./configure --prefix=$HOME/local
make && make install
 

ruby1.9のインストール

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のインストール

cd $HOME/local/src
tar xf rubygems-2.5.0.tgz
cd rubygems-2.5.0
ruby setup.rb
 

確認

$ 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 RUBYLIB=${HOME}/local/lib/ruby/site_ruby/1.9.3:${HOME}/local/lib/ruby
export GEM_HOME=${HOME}/local/lib/ruby/gems
export NODE_PATH=${HOME}/local/lib/node_modules
export NODE_MODULES=${HOME}/local/bin/node
export LD_LIBRARY_PATH=${HOME}/local/lib
export LD_RUN_PATH=${HOME}/local/lib
PATH=${HOME}/local/bin:${HOME}/local/lib/ruby/gems/bin:${PATH}

$ source ~/.bashrc

libexecinfo をインストール

node.js のビルドに libexecinfo が必要になるので
$ 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をインストール

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
['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
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
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インストール

cd node-v0.12.7
./configure --with-intl=small-icu --download=all --prefix=$HOME/local
gmake && gmake install
 

確認

$ jekyll -v
jekyll 2.5.3


参考

最終更新:2015年11月10日 22:10