さくら共用サーバーにmecabをインストールする

この記事について

環境さくら共用サーバー(csh)、mecab 0.97
目的自前のmecabをホームディレクトリ以下にインストールする
結果configure→make→make installで導入し、.cshrcのset pathの先頭に自前のパスを追加した

つまずきポイント要約

  • make installで「install-sh: Permission denied」→ chmod 755 install-sh で解決
  • さくらはcshなのでexportは使えない。.cshrcのset pathを直接編集する(パスは左から優先)
  • 辞書を入れていないと「no such file or directory: …dicrc」エラーが出る
  • デフォルトのmecabはphpのバージョンアップでフォルダが変わることがあるので自前で入れるべき
さくら共用サーバーで php-mecab を使うだけならサービスに元々含まれている mecab を利用できる。自前の mecab は不要なのでこのエントリーの作業は不要。自前で mecab はインストールすべき。デフォルトの mecab は php のバージョンアップなどでフォルダが変わることがある。php-mecab は mecab のフォルダを指定してるので不具合が起こる。

さくら共用サーバーにmecabをインストールに至った経緯↓↓

さくら共用サーバーには最初からmecabが入っている。但し辞書はEUC-JPなのでUTF-8で利用するには自前で辞書を用意しなくてはならない。で、辞書のみをインストールしたがどうもうまくいかない。UTF-8でインストールしても文字化け、EUC-JPで文字を扱ってしまう。
いろいろ調べると、当方サーバーにインストールされているmecabのバージョンは、「0.995」で、このバージョンはUTF-8の辞書をうまく使えないバグがあるらしい。
ということで別バージョンのmecabを共用サーバーにインストールした。
↑こう書いたもののいざやってみると、v0.97でも辞書のutf-8化ができない場面に遭遇。mecab本体のインストールは問題なし。mecabのバージョンと辞書の文字コードは関係ないのかもと思い始める。ただutf-8の文字コードで動かすことはできた。詳しくは下記のリンク。

utf-8の辞書、インストール方法はこちら

インストールするmecabのバージョン

mecab 0.97 ←別サーバーでバグがないことを確認済み

インストール先(localは自分で作る)

/home/username/local/

1.ダウンロードしたファイルを解凍

tar xzvf mecab-0.97.tar.gz

2.「configure」実行

cd mecab-0.97 ←フォルダ移動

./configure --prefix=$HOME/local --with-charset=utf8 --enable-utf8-only

※「configure」というシェルスクリプトを実行することで、ソースファイルをコンパイルする前に、インストール対象となるシステム特有の機能/情報をチェックし、チェック状況を記述したMakefileが作成される。

3.コンパイルとインストール

make ← コンパイル

make install ← インストール

すると、インストール時にエラーが出る。

エラー内容

%make install
.././install-sh: Permission denied
*** Error code 126

mecab-0.97フォルダ内のinstall-shファイルにアクセス権限がないとのことで、確認してみる

ls -l install-sh

こう表示された

-rw-r--r--  1 username  users  5569 Jan 29  2007 install-sh

アクセス権限を変更(「install-sh」は「install -sh」でないよ。ハマッた)

chmod 755 install-sh

再びインストールを試みる

make install

(make cleanで不要はファイルは消せる)

インストール成功。

接続し直してバージョンを確認。binフォルダはインストールが成功するとできる。

~/local/bin/mecab -v

~(チルダ)は、ユーザのホームディレクトリ(home/username)のこと。$HOMEも同じ。

4.簡単に使えるようにパスを通す

現在のPATHを確認してみる

echo $PATH

結果

/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/home/username/bin

:」は区切り。

パスを書き換えるため、exportを実行するがエラーが出る

コマンド

export PATH=~/local/bin:$PATH

結果

export: Command not found.

ファイルを直接書き換えることにする。
利用しているシェルを確認してみる

コマンド

echo $SHELL

結果

/bin/csh

この場合、ホームディレクトリ直下にある.cshrcファイルを編集することになる。
パスは左から優先されるので、自前のmecabが選択されるよう、一番左にパスを追加する。

編集内容

#set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin) ←コメントアウト
set path = ($HOME/local/bin /sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin) ←追加行

(エックスサーバーは bash なので .bashrc に↓追記)

export PATH=$HOME/local/bin:$PATH

PATHが通ったことを確認

echo $PATH

mecabのバージョンを確認

mecab -v

なお辞書をインストールしていないとエラーが出る

param.cpp(69) [ifs] no such file or directory: /home/username/local/lib/mecab/dic/ipadic/dicrc

辞書のインストールはこちら

関連記事

タイトルとURLをコピーしました