Python上でMeCabを使う

GCCのインストール

CentOSGCCが入っていないことがあるので、インストールしておく。GCCがないとMeCab入らない。

% yum install glibc glibc.i386
% yum install gcc*   

gcc*でgcc関連のモジュール全部入れる)

MeCabを入れるためのステップは、次のとおりになる。

MeCabのインストール

% wget http://downloads.sourceforge.net/mecab/mecab-0.97.tar.gz
% tar xvfz mecab-0.97.tar.gz
% cd mecab-0.97/
% ./configure
% make
% su 
$ make install

辞書ipadic2.7.0 のインストール

./configure のときに --with-charset=utf8 オプションをつけると、辞書の文字コードUTF-8 になる。つけなければデフォルトの EUC-JP になる。

% wget http://downloads.sourceforge.net/mecab/mecab-ipadic-2.7.0-20070801.tar.gz
% tar xvfz mecab-ipadic-2.7.0-20070801.tar.gz
% cd mecab-ipadic-2.7.0-20070801
% ./configure --with-charset=utf8
% make
% su 
$ make install

Pythonバインディングのインストール

wget http://downloads.sourceforge.net/mecab/mecab-python-0.97.tar.gz
% tar xvfz mecab-python-0.97.tar.gz
% cd mecab-python-0.97
% su
# python setup.py install

本当にバイディングできたのか、テストする。

$ python
>>> import MeCab
>>> m = MeCab.Tagger()
>>> print m.parse("本日は良い天気です")

コンパイルミスへの対応

crt1.oが無い
/usr/bin/ld: crt1.o: No such file: No such file or directory

と出てきて、configureがこけることがある。このメッセージはファイルcrt1.oが見つからないという意味。
crt1.oは、コンパイル時にgccが内部的にリンクするファイルで、glibc-develパッケージに含まれるモジュールなので、glibc-develをインストールする。

# yum install glibc
# yum install glibc-devel
g++が無い
configure: error: Your compiler is not powerful enough to compile MeCab.
If it should be, see config.log for more information of why it failed.

gcc-c++が無いと、こういうエラーが出現するみたい。gcc-c++をいれると解決する。

$ sudo yum install gcc-c+
libmecab.so.1が無い
/usr/local/libexex/mecab/mecab-dict-index: error while loading shared libraries:libmecab.so.1: cannot open shared object file: No such file or directory

mecab をインストールしただけの状態では、IPA辞書のインストール時に libmecab.so.1 が見つからないというエラーが発生する。 libmecab.so.1 は /usr/local/lib/libmecab.so.1 にインストールされているが、標準設定では /usr/local/lib/ 配下のライブラリが読み込まれないようになっている。

これを読み込ませるために /etc/ld.so.conf ファイルを編集する必要がある。このファイルを修正したらldconfigを実行して、ライブラリ読み込みパスの更新する

# vi /etc/ld.so.conf
/usr/local/lib (この1行を追加)
# ldconfig
# exit
pyhton.hが無い

python-develに含まれているので、インストールしましょう。

$ yum install python-devel

SSHサーバのセットアップ

CentOS5にrpmbuildが入っていないので、インストール。

$ yum list | grep rpm-build
rpm-build.i386  4.4.2-47.el5  base  
$ sudo yum install rpm-build
$ which rpmbuild
/usr/bin/rpmbuild

設定ファイルの修正

/etc/ssh/sshd_configを修正。

# RSA秘密鍵 identityを必須にする( no で“必須”を指定 )
PasswordAuthentication no

# rootでのログインを禁止する
PermitRootLogin no

# パスワード無しのログインを許すか
PermitEmptyPasswords no

# .rhosts等を信用するか(RSA認証付き)
RhostsRSAAuthentication no

# ユーザhogeのみ接続許可をする(不特定多数に接続させない為)
AllowUsers hoge

/etc/ssh/sshd_configの設定出来たら、 SSH の再起動を行う。

# /etc/rc.d/init.d/sshd restart
sshdを停止中:                                       [  OK  ]
sshdを起動中:                                       [  OK  ]

sshdが自動スタートするように設定する。

# setup
  • 設定ツールが起動するので、「システムサービス設定」を選択する。
  • telnetの行を見つけ、スペースキーを押して、telnet と書かれた横の [ ] の欄を空白にする。これにより、起動時に telnet自動起動しなくなる。
  • sshd を起動するサービスに設定する。これにより、起動時に SSH自動起動するようになる。
  • 設定を保存して終了する。

鍵の作成

CentOS5のインストール

CentOSのインストールは、CDやDVDのインストール・メディアを使う方法と、ネットワーク経由でインストールする方法の2通りがある。今回は、ネットからインストールすることにした。公式サイトに行って、ISOをダウンロードして、CDに焼く。

ここから先は、@ITの記事1の方を参考にする。この記事は、少し古いので、FTPサーバーのディレクトリには次のように指定する。

FTPサイト名:ftp.iij.ad.jp
CentOSディレクトリ:pub/linux/centos/5.3/os/i386

途中の設定に戸惑ったら、@ITの記事2を参考にする。これでインストール完了。

Remote Desktop over SSH

研究室の先輩に命令されて、リモートデスクトップを導入することになった。リモートデスクトップって言うのは、ネットワークに接続しているPCのデスクトップにアクセスし、制御することで、これが使えるようになると、自宅からでも研究室のパソコンを操れるようになるわけだ。似たような機能を提供するものにVNCとか、crossloopがある。

さて、このリモートデスクトップはOS毎に対応が違う。

目標

あるサイトをみると、家のPCで次のように操作すればいいみたい。

以上がそろえば簡単。HOMEPCのCygwin

ssh -L 13389:リモートPC:3389 -1 アカウント名@SEVER

として、リモートPCまでのSSHトンネルを掘ります。後は、HOMEPC上で

localhost:13389

リモートデスクトップの要求を出せばOK.

http://www.ueda.info.waseda.ac.jp/~nakano/index.php?SSH%A5%C8%A5%F3%A5%CD%A5%EA%A5%F3%A5%B0%A4%C7%A5%EA%A5%E2%A1%BC%A5%C8%A5%C7%A5%B9%A5%AF%A5%C8%A5%C3%A5%D7

これを目標に、頑張ろう。

必要なもの

しなければいけないこと

自分がやるのは、研究室のサーバにSSHを導入すること。つまりSSHサーバのセットアップをしなければいけない。SSHサーバのセットアップには、次の手順を踏む。

  • OSのインストール
  • SSHのインストール
  • SSHの設定

やったことを、次の記事に順にまとめていきます。

linuxにおけるホスト名の確認と変更

Linuxにおけるホスト名の確認は、Windowsと変わらないみたい。コンソール上で hostname と打ち込むことでホスト名が確認できる。

# hostname
localhost.localdomain

hostname というコマンドに、引数を持たせれば、ホスト名が変更される。しかし、この変更方法では、OSの再起動を行うと、旧ホスト名に戻ってしまう。

# hostname name

設定ファイルを /etc/sysconfig/network を更新して、ホスト名を変更すると、OSの再起動してもホスト名が変わらないらしい。

# vi /etc/sysconfig/network
……
HOSTNAME=old name
……

ただし、linuxでホスト名を変更するのは、問題みたい。。次のような記述があった。

各サーバ(WebサーバやMailサーバ)などを構築後にホスト名を変更すると、そのサーバが正常動作しなくなる場合があるので注意が必要です
ホスト名を変更したら、各サーバの設定ファイル内に『ホスト名』を指定している部分がありますので、旧ホスト名を新ホスト名に変更してください。
また、設定ファイルを変更したらそのサーバを再起動する必要があります。
(「/etc/sysconfig/network」の変更 → 「各サーバの設定ファイル内のホスト名変更」
→ 「OSのリブート」 → 「動作確認」が理想です)

http://kajuhome.com/fedora_inst_after.shtml

Javaでメールのヘッダーを解析する

JavaMailでメール送信アプリを作るを見ながらJavaMailを使ってみた。

使うライブラリ

JavaMailライブラリを利用するには、JavaMailそのものに加えて、JAFJava Activation Framework)をインストールする必要がある。

ライブラリの追加の仕方
  • ライブラリをpluginフォルダに入れる。
  • 現在のプロジェクトを選択して右クリックし、コンテキストメニューからPropertiesを選択。
  • Java Build PathのLibrariesをクリック、Add External JARsクリックしてをダウンロードした場所を指定。