Help us understand the problem. What is going on with this article?

macでmecab-rubyをビルドせずにインストールする

More than 3 years have passed since last update.

背景

rubyからMeCabを利用しようとすると、
ソースを取得し、makeしてinstallしなければならないし、
場合によってはMakefileの修正も必要なのであまり好きではありませんでした。

しかしふとgem search mecabしてみると

*** REMOTE GEMS ***

mecab (0.98)
mecab-ext (1.0.2)
mecab-light (0.2.2)
mecab-modern (0.0.2)
mecab-mora (0.0.5)
mecab-syllable (0.0.5)

なんとgemからインストールできそうではありませんか。

インストールを試みる

brewでmecabをインストールして

brew install mecab mecab-ipadic

bundle init
してGemfile
gem 'mecab'を追加し、
bundle installしてみると・・・

盛大なエラーが・・・

brewでインストールしたmecabのバージョンが0.996で、
gemのmecab-rubyのバージョンが0.98であることが原因です。

brewでバージョンを指定してインストール

brewでmecabをバージョン指定してみます。

まず、mecabが登録されているバージョンを調べてみます。

brew versions mecab

0.98はちゃんと存在しました。

0.996    git checkout ee21df2 /usr/local/Library/Formula/mecab.rb
0.995    git checkout 1c6ad82 /usr/local/Library/Formula/mecab.rb
0.994    git checkout 4844910 /usr/local/Library/Formula/mecab.rb
0.993    git checkout 642c664 /usr/local/Library/Formula/mecab.rb
0.992    git checkout bb95f13 /usr/local/Library/Formula/mecab.rb
0.99     git checkout 01788c0 /usr/local/Library/Formula/mecab.rb
0.98     git checkout 0476235 /usr/local/Library/Formula/mecab.rb

このバージョン0.98を利用するには/usr/localに移動して、指定のバージョンをチェックアウトします。

git checkout 0476235 /usr/local/Library/Formula/mecab.rb

改めてbrew install mecabしてインストールしてみましょう。

==> Downloading http://downloads.sourceforge.net/project/mecab/mecab/0.98/mecab-0.98.tar.gz

curl: (22) The requested URL returned error: 404
Error: Download failed: http://downloads.sourceforge.net/project/mecab/mecab/0.98/mecab-0.98.tar.gz

だめだ、リンク死んでる・・・

回避するためにbrew edit mecabしてbrewのformulaファイルを書き換えます。

require 'formula'

class Mecab < Formula
  # url 'http://downloads.sourceforge.net/project/mecab/mecab/0.98/mecab-0.98.tar.gz'
  url 'https://mecab.googlecode.com/files/mecab-0.98.tar.gz'
  homepage 'http://mecab.sourceforge.net/'
  # md5 'b3d8d79e35acf0ca178e8d885309f5fd'
  sha1 '8977d7760638ec65132e1f9bfc66655ac761f964'

  def install
    system "./configure", "--disable-debug", "--disable-dependency-tracking", "--prefix=#{prefix}"
    system "make install"
  end
end

いったんbrew uninstall mecab mecab-ipadicして、
改めてbrew install mecab mecab-ipadicすると無事mecab 0.98が使えるようになり、
bundle installでmecab-rubyもビルド出来ました。

rubyからmecabを使うテスト

簡単なサンプルコードを動かしてみます。

require "mecab"

node = MeCab::Tagger.new.parseToNode("本日は晴天なり")
while node
  puts "#{node.surface}\t#{node.feature}"
  node = node.next
end

実行結果

   BOS/EOS,*,*,*,*,*,*,*,*
本日 名詞,副詞可能,*,*,*,*,本日,ホンジツ,ホンジツ
は  助詞,係助詞,*,*,*,*,は,ハ,ワ
晴天 名詞,一般,*,*,*,*,晴天,セイテン,セイテン
なり 助動詞,*,*,*,文語・ナリ,基本形,なり,ナリ,ナリ
   BOS/EOS,*,*,*,*,*,*,*,*

動作しました。

バージョンの一致には気をつける必要がありますが、
bundle管理でgemからインストールできるようになっただけでも便利になりました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした