rubyでshared-mime-infoを使いたいがそれに必要な環境を整える

動機

http://d.hatena.ne.jp/keita_yamaguchi/20070805/1186304326

こちらの記事から俺もちょろっと使ってみたいなと。。。。。ってか自作の判定ライブラリを用意していたんだけどメンテするのも面倒になった(orz)のでどんなもんかなと。しかし記事内であったプログラムを実行すると

MIME.check(path) は動作するが
MIME.check_magics(path) は動作しない

shared-mime-infoとやらが必要らしい。macleopard)でこれをインストールするのがちょっと面倒だったので備忘も含めて書いておこうかと。

osxで必要だったファイル一式

以下のファイルを./configure make install で突っ込むとしっかり動きました

ftp://xmlsoft.org/libxml2/libxml2-sources-2.7.1.tar.gz
http://ftp.acc.umu.se/pub/GNOME/sources/glib/2.18/glib-2.18.0.tar.gz
http://pkgconfig.freedesktop.org/releases/pkgconfig-0.18.tar.gz
http://ftp.gnome.org/pub/gnome/sources/intltool/0.35/intltool-0.35.5.tar.bz2
http://freedesktop.org/~hadess/shared-mime-info-0.51.tar.bz2

結果

実行プログラム(引用サイトのそのまんま・・・)

require 'rubygems'
require 'shared-mime-info'

path = '/Users/webadmin/Desktop/rrr.jpg'
p MIME.check(path) # ファイル名かファイル内容から判別する
p MIME.check_globs(path) # ファイル名から
p MIME.check_magics(path) # ファイル内容から

実行結果

#<MIME::Type:0x53dc5c @magic_priority=50, @glob_patterns=["*.jpeg", "*.jpe", "*.jpg"], @magic=#<MIME::Magic::RootEntry:0x530408 @indent=-1, @sub_entries=[#<MIME::Magic::Entry:0x530084 @range_length=nil, @value_length=3, @indent=0, @word_size=nil, @start_offset=0, @sub_entries=[], @mask=nil, @value="\377\330\377">, #<MIME::Magic::Entry:0x52fcd8 @range_length=nil, @value_length=2, @indent=0, @word_size=nil, @start_offset=0, @sub_entries=[], @mask=nil, @value="\377\330">]>, @type="image/jpeg">
#<MIME::Type:0x53dc5c @magic_priority=50, @glob_patterns=["*.jpeg", "*.jpe", "*.jpg"], @magic=#<MIME::Magic::RootEntry:0x530408 @indent=-1, @sub_entries=[#<MIME::Magic::Entry:0x530084 @range_length=nil, @value_length=3, @indent=0, @word_size=nil, @start_offset=0, @sub_entries=[], @mask=nil, @value="\377\330\377">, #<MIME::Magic::Entry:0x52fcd8 @range_length=nil, @value_length=2, @indent=0, @word_size=nil, @start_offset=0, @sub_entries=[], @mask=nil, @value="\377\330">]>, @type="image/jpeg">
#<MIME::Type:0x53dc5c @magic_priority=50, @glob_patterns=["*.jpeg", "*.jpe", "*.jpg"], @magic=#<MIME::Magic::RootEntry:0x530408 @indent=-1, @sub_entries=[#<MIME::Magic::Entry:0x530084 @range_length=nil, @value_length=3, @indent=0, @word_size=nil, @start_offset=0, @sub_entries=[], @mask=nil, @value="\377\330\377">, #<MIME::Magic::Entry:0x52fcd8 @range_length=nil, @value_length=2, @indent=0, @word_size=nil, @start_offset=0, @sub_entries=[], @mask=nil, @value="\377\330">]>, @type="image/jpeg">