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