UltravioletはRubyによって書かれた様々なSyntax(文法)に対応したSyntax Highlighting Engineです。
今回はこれをさくらインターネットのサーバにインストールしてみましょう。
RubyGemsを使ってインストールをするのですが、以前RubyGemsのインストール方法については書きました。
cocoa*life – ブログをさくらインターネットへ移行しました。
ということで、RubyGemsのインストールが終わっている状態で書き始めます。
Ultravioletのインストール
正規表現ライブラリOniguruma(鬼車)のインストール
まずは正規表現ライブラリであるOnigurumaをインストールします。
普通にconfigureしてmakeしてinstallすれば良いだけです。
wget http://www.geocities.jp/kosako3/oniguruma/archive/onig-5.9.1.tar.gz
tar zxf onig-5.9.1.tar.gz
cd onig-5.9.1
./configure --prefix=$HOME/local
make
make install
RubyGemsを使ってUltravioletのインストール
一直線に答えを書いてしまってもいいのですが、問題解決法を書くのも忘れてしまう自分のためになると思うので、書きます。
gem install -r ultraviolet
とすればいいと思いきや、こんなエラーが出て止まります。
oregexp.c:2:23: oniguruma.h: No such file or directory
どうも標準ではない/home/hoge/local/以下にインストールしてあるので、oniguruma.hなどが見つからないようです。
さらに、エラーの最後を見ていると
Stop in /home/hoge/local/gems/oniguruma-1.1.0/ext.
なんて書いてあって、 どうも依存関係によりまず他のライブラリをインストールしているよう。
調べてみるとOniguruma for Rubyというものらしい。
そこでまず~/local/gems/oniguruma-1.1.0というフォルダを見てみると、Rakefileがある。
さらに中身を読んでみると、30 〜 36行目に以下のような記述があります。
if ENV['PLATFORM'] =~ /win32/
p.lib_files = ["win/oregexp.so"]
p.spec_extras[:require_paths] = ["win", "lib", "ext" ]
p.spec_extras[:platform] = Gem::Platform::WIN32
else
p.spec_extras[:extensions] = ["ext/extconf.rb"]
end
どうも、ext/extconf.rbがくさそうだという気がしたので、ext/extconf.rbを見てみます。
require 'mkmf'
have_library("onig")
$CFLAGS='-Wall'
create_makefile( "oregexp" )
たった4行!
ですがcreate_makefileでMakefileを作成しているというのは読み取れますので、何かありそうです。
そしてどうも、require ’mkmf’というのが鍵を握っている様な気がしました。
mkmf – Rubyリファレンスマニュアル
Ruby の拡張ライブラリのための Makefile を作成するライブラリです。
mkmf – Rubyリファレンスマニュアル
ということで、ビンゴでしょうか?
さらに読み進めると
- –with-opt-dir=directory
- ヘッダファイル、ライブラリファイルを探索するディレクトリ directory/include、directory/lib をそれぞれ追加します。
mkmf – Rubyリファレンスマニュアル
と書いてあるので、これを指定できればいいということになります。
ということで、
gem install -r oniguruma -- --with-opt-dir=$HOME/local
gem install -r ultraviolet
として、これでめでたくインストールが完了します。
RubyGemsに慣れている人であれば当たり前のことなのかもしれませんが、自分は初めてだったので良い経験になりました。
Ultravioletの使い方
uvというコマンドがUltravioletのコマンドになりますが、uv –helpでヘルプを見てみると
uv -t amy -h ~/.bashrc > bashrc.html
なんてのがサンプルとして書いてあります。
amyというのはテーマの名前のようです。
テーマはUltraviolet Theme Galleryで見ることができます。
-sでSyntaxを指定することができますが、ある程度は自動的に認識されるのかもしれません。
uv -l syntax
で利用可能なSyntax一覧を表示することが可能です。
自分は.zshrcをやってみました。
Syntaxが認識されないので、-s shell-unix-genericというのを指定しました。
uv -t blackboard -s shell-unix-generic -h ~/.zshrc > zshrc.html
生成されたzshrc.htmlはcssを参照しているところがあるのですが、そのcssは
/home/hoge/local/gems/ultraviolet-0.10.2/render/xhtml/files/cssにあります。

Rubyからもライブラリとして使うことができるようです。
Usageのところを見ると書いてあります。