忘れたときに備えた記録

トップ 最新 追記
2005|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|11|12|
2009|01|02|03|04|05|06|10|12|
2010|06|07|08|12|
2011|07|09|
2012|09|11|
2013|02|03|09|
2015|10|11|
2016|01|08|11|
2017|02|08|10|
2018|11|

2013-03-31(Sunday)

OS XでRubyをビルド(その2) Mac Portsのライブラリを使わせる

前回、以下の様な方法でRubyをビルドしましたが、

mac:ruby-1.9.3-p392 hiraku$ ./configure \
CPPFLAGS=-I/opt/X11/inlude \
--prefix=/opt/ruby/1.9.3-p392_failure && make && make install

この方法では以下の様なエラーがライブラリ周りで起きてしまいました。

mac:ruby-1.9.3-p392 hiraku$ /opt/ruby/1.9.3-p392_failure/bin/ruby -ve 'require "yaml"'
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin12.3.0]
/opt/ruby/1.9.3-p392_failure/lib/ruby/1.9.1/yaml.rb:56: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.

そこで、Mac Portsでライブラリをインストールして、それを使うようにビルドの時に指定することで解決できました。

まずMac Portsでyaml関連のライブラリをインストールします。

mac:~ hiraku$ port installed | grep yaml
  libyaml @0.1.4_1 (active)

これを使ってビルドするには、以下のようにCPPFLAGSとLDFLAGSでオプションを指定します。

mac:ruby-1.9.3-p392 hiraku$ ./configure \
CPPFLAGS="-I/opt/X11/include -I/opt/local/include" \
LDFLAGS="-L/opt/X11/lib -L/opt/local/lib" \
--prefix=/opt/ruby/1.9.3-p392_success \
&& make && make install

こうすることで、必要なライブラリさえMac Portsで用意出来ればどんなバージョンのRubyでもインストールできました。

mac:~ hiraku$ /opt/ruby/1.8.7-p371/bin/ruby -ve 'require "yaml"'
ruby 1.8.7 (2012-10-12 patchlevel 371) [i686-darwin12.2.1]
mac:~ hiraku$ /opt/ruby/1.9.3-p392 -ve 'require "yaml"'
1.9.3-p392/         1.9.3-p392_failure/ 1.9.3-p392_success/
mac:~ hiraku$ /opt/ruby/1.9.3-p392/bin/ruby -ve 'require "yaml"'
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin12.2.1]
mac:~ hiraku$ /opt/ruby/2.0.0 -ve 'require "yaml"'
2.0.0/    2.0.0-p0/ 
mac:~ hiraku$ /opt/ruby/2.0.0-p0/bin/ruby -ve 'require "yaml"'
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin12.2.1]

OS X で Emacsの indent-region のショートカットキーを使う

Emacsでは、C-M-\で"indent-region"が作動して、僕はこれを手も便利に使っていたのですが、なんとMacでは使えません。

Shell command on region: 

とか出てしまうのです。

どういうことかあぁぁぁぁぁっとブチ切れそうになりながら、とりあえず C-h k (describe-key)で調べると、以下のように出てきます。

M-| runs the command shell-command-on-region, which is an interactive           
compiled Lisp function in `simple.el'.

C-M-\ が、なぜか M-| として入力されています。 それでもう、ここには書けないようなAppleへの悪態を散々ブーたれながら調べたら、どうもこれは、OS X(またはMac BookのJISキーボードで?)optionを押しながらキーを入力すると、記号が入力出来たりすることに関連がありそうでした。

そこで、KeyRemap4MacBookを使って、"For Japanese"->"Change Yen(¥) Key"から"JIS Yen(¥) to Backslash(\)"にチェックを入れると、右上の"\"キーで"\"が直接入力されて、Emacsでも C-M-\ で"indent-region"が使えるようになりました。

ちなみにこの状態では、optionキーを押しながら\を押すと'«'が入力されます。なんだこれ。 さらにちなみに、option+yで"¥"になります。