この記事について
| 環境 | さくら共用サーバー(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のバージョンアップでフォルダが変わることがあるので自前で入れるべき
さくら共用サーバーに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
辞書のインストールはこちら
