久しぶりにgem updateをしてみると,長々とエラーが出てきました.
$ gem update 略/ruby/lib/ruby/2.0.0/yaml.rb:6:in `<top (required)>': It seems your ruby installation is missing psych (for YAML output). To eliminate this warning, please install libyaml and reinstall your ruby. 略/ruby/lib/ruby/2.0.0/rubygems/custom_require.rb:36:in `require': cannot load such file -- psych (LoadError) from 略/ruby/lib/ruby/2.0.0/rubygems/custom_require.rb:36:in `require' (略) from 略/ruby/bin/gem:21:in `<main>'
「psych」という単語は,ちょっと見慣れません.検索したところ,まず,
を見つけました.「Ruby 1.9.3ではYAMLパーサーとして従来のsyckにかわりpsychが使われるようになった」ということですか.とはいえ方法(コマンド)は,残念ながら,Cygwin環境ではまったく使えません.
次に,
というのを見つけました.喜び勇んで「gem install psych」を実行…ダメでした.おんなじエラーが出てきました.
ビルドをやり直しましょう.コマンドは
に書かれているのですが,
rubyのconfigureでyamlを有効にする方法。--with-opt-dir=/usr/local/libは、--with-opt-dir=/usr/localが正解だった。
http://b.hatena.ne.jp/takumi2077/20120815#bookmark-65677129
というはてブも重要です.
結局のところ,コマンドとしては
$ wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz $ tar xzvf yaml-0.1.4.tar.gz $ cd yaml-0.1.4 $ ./configure $ make $ make install $ cd .. $ wget ftp://ftp.ruby-lang.org/pub/ruby/snapshot.tar.gz $ tar xzvf snapshot.tar.gz $ cd snapshot $ ./configure --prefix=/usr/local --with-opt-dir=/usr/local $ make $ make install
とすることで,/usr/local/lib/libyaml.aや/usr/local/bin/ruby.exeなどができました.
以前書いたzsh用のfunctionを,修正しておきましょう.(11月10日に書いた修正も,加えました.))
function ruby-snapshot-install() { local ECHO="echo" local today=$(date '+%Y%m%d') local ssflag=1 local instdir="ruby" local configopt="" local uri dir1 dir2 tgz if [[ $# != 0 ]] then instdir=$1 shift if [[ $# != 0 ]] then ssflag=$1 shift fi fi if [[ $ssflag = "1" ]] then # 安定版スナップショット uri=ftp://ftp.ruby-lang.org/pub/ruby/stable-snapshot.tar.gz dir1=ruby dir2=ruby-ss-$today tgz=$dir2.tgz else # 最新版スナップショット uri=ftp://ftp.ruby-lang.org/pub/ruby/snapshot.tar.gz dir1=snapshot dir2=ruby-sn-$today tgz=$dir2.tgz if find /usr/local | grep libyaml >/dev/null then configopt="${configopt} --with-opt-dir=/usr/local" fi fi $ECHO pushd $HOME/src $ECHO wget -O $tgz $uri $ECHO tar xzf $tgz $ECHO mv $dir1 $dir2 $ECHO popd $ECHO pushd $HOME/src/$dir2 if [[ $ARCHI = "linux" ]] then configopt="${configopt} --enable-pthread" fi $ECHO ./configure --prefix=$HOME/Lib/$instdir ${=configopt} $ECHO make $ECHO make install $ECHO popd } # Cygwinなら,~/Lib/ruby/bin/ruby が最新版スナップショット, # ~/Lib/.ruby18/bin/ruby が安定版スナップショット. # そうでないなら,~/Lib/ruby/bin/ruby が安定版スナップショット, # ~/Lib/.ruby19/bin/ruby が最新版スナップショット. if [[ $ARCHI = "cygwin" ]] then function ruby-build() { ruby-snapshot-install ruby 0 ruby-snapshot-install .ruby18 } else function ruby-build() { ruby-snapshot-install ruby-snapshot-install .ruby19 0 } fi