カテゴリー
perlモジュール

CentOS5.5でText::Mecabをインストール

Text::Mecabがインストール出来なかった。
そういえば昔諦めた気がする。
で、エラー内容を見てみる。

# perl Makefile.PL
Path to mecab config? [/usr/local/bin/mecab-config] 
detected mecab version 0.98
Using compiler flags '-I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=98'...
Using linker flags '-L/usr/local/lib -lmecab -lstdc++'...

Text::MeCab needs to know what encoding you built your dictionary with
to properly execute tests.

Encoding of your mecab dictionary? (shift_jis, euc-jp, utf-8) [euc-jp] utf-8
Using utf-8 as your dictionary encoding
Detected the following mecab information:
   version: 0.98
   cflags: -I/usr/local/include -DMECAB_MAJOR_VERSION=0 -DMECAB_MINOR_VERSION=98 -I src
   libs: -L/usr/local/lib -lmecab -lstdc++
   include: /usr/local/include
/root/.cpanm/work/1294395897.25225/Text-MeCab-0.20011/assertlibeiKR8srG: error while loading shared libraries: libmecab.so.1: cannot open shared object file: No such file or directory
/root/.cpanm/work/1294395897.25225/Text-MeCab-0.20011/assertlibEejMJieF: error while loading shared libraries: libmecab.so.1: cannot open shared object file: No such file or directory
wrong result: 'mecab', 'mecab'

libmecab.so.1 が見つからないらしい。
/usr/local/lib/libmecab.so.1 にインストールされている。

CentOSの標準設定ではPATHが通っていないらしいので、/usr/local/lib/ 配下のライブラリが読み込まれない様子。

で、/etc/ld.so.conf あたりをいじる必要がある。

# vi /etc/ld.so.conf

/usr/local/lib    ←最終行に追記

ldconfigを実行して、ライブラリ読み込みパスを更新。

# ldconfig 

※pathが通っていない場合は /sbin/ldconfig

Text::Mecab のディレクトリへ移動して手動でインストール

perl Makefile.PL
make
make test
make install
カテゴリー
perlモジュール インストールメモ

CentOS5.5 ImageMagick インストール関連

ImageMagickのインストールはyumで管理するのが一番簡単。
ただし、CentOSのImageMagickはバージョンが古い(v6.2.8)

ImageMagickのperlモジュール(PerlMagick?)はCPANでインストールすると入らないので、yumでスコッといれる。

カテゴリー
postfix インストールメモ

メールサーバ構築のまとめ(複数のバーチャルドメイン+Postfix+MySQL+Dovecot+procmail+Clam AntiVirus+spamassassin+postfixadmin)

  • 2013/02/23追記 dovecot2にアップグレードしたエントリーはこちら
  • 2013/02/22追記 TLS対応。エントリーはこちら
  • 2013/01/15追記 wpの設定を変えたこともあり見難いので随時記事を添削します。
  • 2013/01/13追記 PostfixのMySQL対応はyumで出来るようです。詳しくは該当箇所で
  • 2012/08/31追記 master.cf の設定に漏れがありました。詳しくは該当箇所で
  • 2012/09/05追記 main.cf の設定に追加しました。詳しくは該当箇所で

  • 設定項目などはほぼコピペ。自分用のメモ。
    記事中の各リンク先の通り設定したのではなかなか実現できないので多少アレンジしています。

    ローカルのUNIXユーザーはMairdir/方式でメールを使いたい。
    バーチャルドメイン複数の運用、かつ、Web GUIでメールアカウントを管理したい。
    スパムメールとウィルスもチェックしたい。

    このような要望のもと、メールサーバを立て直した際に以前書いた記事をまとめてみた。
    さすがに長文になったので続きを読むにした。

    • CentOS5.5 i386とする
    • MySQLは設定済み前提
    • ローカルのUNIXユーザはMaildir方式でメールを利用する。
      メールボックスは ~/home/username/Mairdir
    • 複数のドメインをバーチャルドメインで扱う。
      メールボックスは /mail/domain.tld/user@domain.tld
    • PostfixをMTAとしてバーチャルドメインでのメールアカウントはMySQLで管理する。
    • Clam AntiVirusでウィルスチェックを行う。
    • SpamAssassinでスパムチェックを行う。このため各メールボックスへの配送(transport)はprocmailで行う。

    スガラボット (守田 直哉)さんのコメントを参考にすると、メールボックスは /mail/domain.tld/user@domain.tld/Mairdir にしておいた方がdovecot2を使う時に良さそうです。

    カテゴリー
    perlモジュール

    Crypt::RC4 で暗号化した時に改行コードが混じる場合がある点に注意

    サクっと暗号化/復号化を使いたい時に便利なperlモジュール Crypt::RC4
    このモジュールでとある文字列を暗号化すると改行コードが混じる場合がある。

    例えば s2525 を暗号化する。

    use Crypt::RC4;
    my $secret_key='1234';
    my $encrypted = Crypt::RC4->new($secret_key)->RC4('s2525');
    print $encrypted;
    
    実行結果
    �{�
    �
    

    $encrypted をファイルに記録したりすると、改行コードがあるため意図しないところで改行されてしまったりする。

    pack/unpackして使う場合が多いと思うけど、

    $encrypted =~ s/(.)/unpack('H2', $1)/eg;

    としても改行コードは残ったままなのでやはり注意が必要。