2007年12月アーカイブ

Kwinsのライセンス更新の案内が来た。
ちょうど一月前に、シャープ良い暮らしストアからポイント有効期限のお知らせと言うのが来ていて、今日が期限だった。
あわてて申し込みをして、1,050円分をポイントで払う。また新しく1,050円分のポイントがついたけど、来年は間に合わないような気がするな。

今日のアップデート(2.10)で、PS3がDivXとWMVに対応したらしい。
早速アップデートしようと思って立ち上げてみたが、何故かバージョンアップしない。右上に出ているティッカーには「2.10出ましたよ~」と言うお知らせが流れているのに・・・。
まあ、そのうちできるだろうと思って、うちのNAS(TeraStation TS-1.0TGL/R5)もDLNAサーバにならないかな~と思う。
ちょっと調べてみたら、MediaTombと言うのがあるらしいので、ソースを持ってきてみる。
configureで、以下のようなエラーが出る。g++までは入れたつもりだったけど、なんか不完全だったのかな。
configure:3174: checking for C++ compiler default output file name
configure:3201: g++    conftest.cpp  >&5
/mnt/array1/opt/usr/bin/../lib/gcc-lib/ppc-vine-linux/3.3.6/../../../libm.so: undefined reference to `_rtld_global_ro@GLIBC_PRIVATE'
collect2: ld returned 1 exit status
とりあえず、TeraStationに入れるのはひとまず置いて、使い物になるかどうかを見るために FreeBSDに入れてみる。
portsから、net/mediatombをインストール。mysql-client-5.0を要求するので、今入っている4.1と競合する。
うちでmysqlを使っているのはcactiだけ(?)なので、mysql4.1をアンインストールしてmysql5.0をインストールする。
mediatombをインストールしてから気がついたんだけど、mediatombが使うのはsqlite3かmysqlなので、デフォルトのままsqlite3を使う分にはmysqlは必要なさそうだ。


/usr/local/etc/mediatomb/config.xmlが設定ファイルらしい。
デフォルトだと、webのインターフェイスが有効で、かつ認証なし。これだと、mediatombを起動しているユーザが見れるファイルは全部webで公開されてしまうので、マニュアルを見ながらちょっと変える。
*** config.xml.dist     Tue Dec 18 14:26:52 2007
--- config.xml  Tue Dec 18 15:25:48 2007
***************
*** 2,8 ****
  <config xmlns="http://mediatomb.cc/0.10.0/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mediatomb.cc/0.10.0/config http://mediatomb.cc/0.10.0/config.xsd">
    <server>
      <ui enabled="yes">
!       <accounts enabled="no" session-timeout="30"/>
      </ui>
      <name>MediaTomb</name>
      <home>/var/mediatomb</home>
--- 2,10 ----
  <config xmlns="http://mediatomb.cc/0.10.0/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mediatomb.cc/0.10.0/config http://mediatomb.cc/0.10.0/config.xsd">
    <server>
      <ui enabled="yes">
!       <accounts enabled="yes" session-timeout="30">
!          <account user="username" password="password"/>
!       </accounts>
      </ui>
      <name>MediaTomb</name>
      <home>/var/mediatomb</home>
後は、/etc/rc.confを以下のようにして、起動してみる。
mediatomb_enable="YES"
mediatomb_interface="rl0"
※ rl0は、家庭内LAN側のインターフェイス。

で、ログを見るとURLがわかるので、webブラウザでそこにアクセス。(Windowsであれば、ネットワーク一覧に出てくる)
そうすると、ファイルシステムが見れるので、その中からDLNAで公開したいディレクトリを選び、一定時間毎に中身をスキャンしてdbを更新するような設定にする。
しかし、ファイルシステム全体を見せるのではなくて、限定された領域にできないものだろうか。

試しにPS3から見てみると、写真、音楽、動画のところに、MediaTombと言うのがあって、そこに公開したコンテンツが並ぶ。
NAS側じゃなくてFreeBSDサーバでやったので、動画は試せていないんだけど、少なくとも写真が見れることは確認した。
と思っていたら、夜の20時頃になってやっとPS3のファームをバージョンアップすることができた。
面倒だから動画で試してないけど。

このままFreeBSDにサーバをやらせて、FreeBSDからNASのディスクをsmbmountでマウントしても良いんだけど、できればTeraStationで直接MediaTombを動かしたいなあ。
# っつーか最近の奴だと標準でメディアサーバ機能とか言って付いてるんだな・・・。
なんとかTeraStationでMediaTombを動かしたいと思ってねばってみる。
昨日のエラー(/mnt/array1/opt/usr/bin/../lib/gcc-lib/ppc-vine-linux/3.3.6/../../../libm.so: undefined reference to `_rtld_global_ro@GLIBC_PRIVATE')について調べてみると、/lib/ld.so.1と/opt/usr/lib/libm.soのバージョン不整合が問題らしいことがわかった。
ここで一度整理しておくと、
  • /lib には、TeraStationにもともと入っていたファイルが入っている。
  • /opt/lib, /opt/usr/lib, /opt/usr/local/lib には、どこかから持ってきたrpmや、自分でコンパイルしたライブラリが入っている。
  • /opt/usr/lib, /opt/usr/local/lib から、/usr/lib, /usr/local/libにシンボリックリンクを張っている。
  • /lib/ld.so.1はld-2.3.2.so
  • /opt/lib/ld.so.1はld-2.3.4.so
  • /lib/libm.so.6はlibm-2.3.2.so
  • /opt/usr/lib/libm.soはlibm-2.3.4.so
と言う状態。
なので、/opt/usr/lib/libm.soを一度削除し、/lib/libm.so.6へのシンボリックリンクにしてみたところ、configureが進むようになった。
今度は、sqlite3かmysqlが必要だよんと言うエラーになったので、sqlite3を入れてみることに。
sqlite-3.5.4.tar.gz を持ってきて、configure (--prefix=/opt/usr/local --disable-tcl), make。すんなり通・・・らない。
--disable-tclしても、コンパイルするのにtclshを使おうとする。
いい加減TeraStationにtclまで入れるのは嫌だったので、その時点のソースをtarで固めてFreeBSDに持ってきて、
% tclsh tool/mksqlite3c.tcl
を実行して再びTeraStationに持って行き、Makefileの中でsqlite3.cを作っているところをコメントアウトして、先に進む。(ライブラリはできてるっぽいので、コマンドラインがいらないならこの作業は不要かも)
無事に最後まで通ったので、make install。

再びmediatombに戻ってconfigure。
最後の方でいろいろないない言われて気になっていたら、
CONFIGURATION SUMMARY ----

sqlite3       : yes
mysql         : missing
libjs         : missing
libmagic      : missing
inotify       : missing
libexif       : missing
id3lib        : missing
taglib        : missing
libextractor  : disabled
とか言われた。いろいろ入れないと満足に使えないのかな?と思ったけど気にせずmake。
if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I../tombupnp/upnp/inc    -I../src -I../tombupnp/ixml/inc -I../tombupnp/threadutil/inc -I../tombupnp/upnp/inc -I..            -pthread  -g -O2 -MT libmediatomb_a-action_request.o -MD -MP -MF ".deps/libmediatomb_a-action_request.Tpo" -c -o libmediatomb_a-action_request.o `test -f '../src/action_request.cc' || echo './'`../src/action_request.cc; \
then mv -f ".deps/libmediatomb_a-action_request.Tpo" ".deps/libmediatomb_a-action_request.Po"; else rm -f ".deps/libmediatomb_a-action_request.Tpo"; exit 1; fi
In file included from ../src/zmm/zmm.h:37,
                 from ../src/zmmf/zmmf.h:35,
                 from ../src/common.h:42,
                 from ../src/action_request.h:36,
                 from ../src/action_request.cc:36:
../src/zmm/object.h:35:29: new: No such file or directory
なんて言われる。ん~、libstdc++まわりが入ってない?
かなりくじけそうになりつつ、ftp://ftp.kddilabs.jp/pub/Linux/packages/Vine/Vine-4.0/ppc/Vine/pool/ からlibstdc++3-3.3.6-0vl7.ppc.rpm, libstdc++3-devel-3.3.6-0vl7.ppc.rpmを持ってきてrpm2cpioとか使ってインストールする。(rpm2cpio *.rpm | cpio -idvして、必要なファイルだけtarでコピー)
これで、コンパイルは進んだけど、最後のリンクするところでlibiconv絡みでundefined referenceエラー。
原因を調べるのも面倒なので、build/MakefileのLIBSに-liconvを追加したら通った。(→configure時に--enable-iconv-libを付けるのが正しいらしい)
試しに実行してみようとしたら、libiconv.soとlibstdc++.soが見つけられなくてエラーが出る。
設定ファイルの位置も良くわからない。と言うか、FreeBSDであったconfig.xmlとか、rcスクリプトとかはない模様。
かろうじて、/opt/usr/local/share/mediatombにmappings.xmlとか言うファイルがあった。
しょうがないので、FreeBSDのconfig.xmlを元に設定ファイルを作成。
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://mediatomb.cc/0.10.0/config" xmlns:xsi="http://www.w3.org/2
  <server>
    <ui enabled="yes">
      <accounts enabled="yes" session-timeout="30">
        <account user="username" password="password"/>
      </accounts>
    </ui>
    <name>TeraStation</name>
    <home>/opt/var/mediatomb</home>
    <webroot>/opt/usr/local/share/mediatomb/web</webroot>
    <storage driver="sqlite3">
      <database-file>mediatomb.db</database-file>
    </storage>
  </server>
  <import hidden-files="no">
    <filesystem-charset>CP932</filesystem-charset>
    <metadata-charset>CP932</metadata-charset>
    <scripting script-charset="UTF-8">
      <common-script>/opt/usr/local/share/mediatomb/js/common.js</common-script>
      <playlist-script>/opt/usr/local/share/mediatomb/js/playlists.js</playlist-
      <virtual-layout type="builtin">
        <import-script>/opt/usr/local/share/mediatomb/js/import.js</import-scrip
      </virtual-layout>
    </scripting>
    <mappings>
      <extension-mimetype ignore-unknown="no">
        <map from="mp3" to="audio/mpeg"/>
        <map from="ogg" to="application/ogg"/>
        <map from="asf" to="video/x-ms-asf"/>
        <map from="asx" to="video/x-ms-asf"/>
        <map from="wma" to="audio/x-ms-wma"/>
        <map from="wax" to="audio/x-ms-wax"/>
        <map from="wmv" to="video/x-ms-wmv"/>
        <map from="wvx" to="video/x-ms-wvx"/>
        <map from="wm" to="video/x-ms-wm"/>
        <map from="wmx" to="video/x-ms-wmx"/>
        <map from="avi" to="video/avi"/>
        <map from="m3u" to="audio/x-mpegurl"/>
        <map from="pls" to="audio/x-scpls"/>
      </extension-mimetype>
      <mimetype-upnpclass>
        <map from="audio/*" to="object.item.audioItem.musicTrack"/>
        <map from="application/ogg" to="object.item.audioItem.musicTrack"/>
        <map from="video/*" to="object.item.videoItem"/>
        <map from="image/*" to="object.item.imageItem"/>
      </mimetype-upnpclass>
      <mimetype-contenttype>
        <treat mimetype="audio/mpeg" as="mp3"/>
        <treat mimetype="application/ogg" as="ogg"/>
        <treat mimetype="audio/x-flac" as="flac"/>
        <treat mimetype="image/jpeg" as="jpg"/>
        <treat mimetype="audio/x-mpegurl" as="playlist"/>
        <treat mimetype="audio/x-scpls" as="playlist"/>
      </mimetype-contenttype>
    </mappings>
  </import>
</config>
そして、/etc/init.d/mediatombを作成。
#!/bin/bash
#
# Init file for MediaTomb server daemon
#
# chkconfig: 2345 55 25
# description: MediaTomb server daemon
#
# processname: mediatomb
# pidfile: /var/run/mediatomb.pid

# source function library
. /etc/rc.d/init.d/functions

# pull in sysconfig settings
[ -f /etc/sysconfig/mediatomb ] && . /etc/sysconfig/mediatomb

RETVAL=0
prog="mediatomb"

# Some functions to make the below more readable
MEDIATOMB=/opt/usr/local/bin/mediatomb
PID_FILE=/var/run/mediatomb.pid
OPTIONS="-d -c /opt/usr/local/etc/mediatomb/config.xml -l /opt/var/mediatomb/med
export LD_LIBRARY_PATH=/opt/usr/lib:/opt/usr/local/lib

start()
{
        echo -n $"Starting $prog:"
        initlog -c "$MEDIATOMB $OPTIONS" && success || failure
        RETVAL=$?
        [ "$RETVAL" = 0 ] && touch /var/lock/subsys/mediatomb
        echo
}

stop()
{
        echo -n $"Stopping $prog:"
        killproc $MEDIATOMB -TERM
        RETVAL=$?
        [ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/mediatomb
        echo
}

case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        restart)
                stop
                start
                ;;
        *)
                echo $"Usage: $0 {start|stop|restart}"
                RETVAL=1
esac
exit $RETVAL
後は、/opt/var/mediatombディレクトリを作成し、/opt/usr/local/etc/mediatomb/config.xmlと/opt/var/mediatombディレクトリをnobodyで書き込み可にして、/etc/init.d/mediatomb startで無事に起動できた。
起動できたけど、今手元にないので動作確認は後ほど。

一応、PS3から見たときのことも。
  • 日本語のフォルダ名、ファイル名は化ける。(filesystem-charsetとか、metadata-charsetとか言う設定項目があるらしいので、直るかも)
    →filesystem-charsetをファイルシステムの文字コードにしたら、web uiでもPS3でも表示できるようになった。
  • divxのaviはPS3で再生できたけど、早送り/巻戻しができない。PS3のせいかMediaTombのせいかは謎。
PS3で確認したところ、全部「未対応データ」と表示されて再生できない。画像も音楽も動画も。
これは、mediatombのconfigureで全部missingと出てきたのが原因か。
とりあえず、名前で検索してすぐみつかったものをインストール。
  • libmagic - file-4.21.tar.gz
  • libexif - libexif-0.6.16.tar.gz
  • id3lib - id3lib-3.8.3.tar.gz
  • libextractor - libextractor-0.5.18.tar.gz
libextractorだけは、configure&makeでは入らなかった。どうも、他にmpegのライブラリとかいろいろ要求してそうだったので、さくっと諦める。
残りのうち、inotifyはkernel2.6からのものらしいので諦めて、libjsとtaglibは名前が一般的過ぎてソースを見つけられなかったので諦めた。mediatombの本家サイトを見れば書いてあるのかも知れないけど。(→書いてありました http://mediatomb.cc/pages/documentation#id3026936 とりあえず、上記のものだけ入れれば足りそう)
これらを全部入れた後、再度mediatombをconfigureからやったら、jpegだけはPS3で見れるようになった。
しかし、mp3と動画は全滅。

マニュアルを読み込んだところ、configファイルのserverセクションに以下を追加しろとあったので追加してみました。
<protocolInfo extend="yes"/>
すると、mp3とaviもちゃんと表示されて、再生できるようになりました。動画の早送りもちゃんとできました。(もっとも、id3libを入れたはずなのに、mp3のid3タグ情報は取れてなさそうな雰囲気)
ただ、ずっとTeraStationががりがり言っていて、まだDBを作成中のようなので、先ほど再生できなかったのはそのせいかも知れません。(早送りができるのはprotocolInfoのおかげだと思う)

しかし、数百GBのデータを扱うDLNAサーバをやらせるには、TeraStationのCPUは非力なようです。
SANYOのデジカメ DSC-CG65が修理から帰ってきた。
今回は無償で済んだ。メイン基盤交換だそうで、なんで壊れたのかはわからない。
うちにはSDHCが読める環境がないので、デジカメをUSBで繋ぐとUSBマスストーレジとして見れるのでそれで転送する。
普通の静止画の写真の方は、picmvと言うソフトでメモリカードからNASに転送している。転送しながら縮小版が作れたり、好きなファイル名にできるので重宝している。
一応、picmvは拡張子での指定ができるので、DSC-CG65のMP4もいけるのかも知れないけど、静止画とう動画は別の場所に置きたいとか、ディレクトリとファイル名のルールも変えたいとかあって、picmvとは別管理にしたい。
そのままだと、SANYxxx.MP4とかそう言うファイル名で、カメラ側でファイル名をリセットしてしまうとファイル名に重複が出てしまうのと、EXIFとかと違ってMP4(MPEG-4AVC/H.264)はまだexplorerでは撮影日時などの情報を見ることができないと言うのがあり、ファイル名を撮影日時にしておきたいところ。

とりあえず、Visual C# 2005 Express Editionがあるので、C#でmp4をコピーするプログラムを作ろうと思い立つ。
でも、MP4の中を読む方法がわからないので、カメラから転送するときのファイルの更新日時をベースにコピー先のファイル名を生成することにする。
# この程度なら、perlとかでさくっと作ったほうが全然早いかも知れないな。

とにかく、一晩でやっつけで作ってみた。例によってエラーチェックとか全然なし。C#もランタイムで例外が発生してくれるから気が楽(?)だ。
C#のプロジェクトは、どのファイルが必要なファイルか良くわからないので、svnのリポジトリとかにはまだ入れていない。なので、公開は今のところ考えていない。需要もないだろうし(笑)。

と、言うわけで、この記事では(ほぼ)初めてのC#プログラミングではまった所を列挙してみる。
  • ファイルダイアログではファイルしか選択できない
    コピー元ディレクトリとコピー先ディレクトリを指定して、コピーするプログラムにしようと思ったのだけれど、最初に見つけたOpenFileDialogやSaveFileDialogと言ったコンポーネントでは、ファイルは指定できるけれどもディレクトリは指定できない。
    悩んだ挙句、FolderBrowserDialogと言うのを使うとディレクトリが指定できることがわかった。
    使いにくい。
  • マルチスレッドでのコンポーネントへのアクセス
    ネットワーク経由での動画のコピーにはかなり時間がかかるので、マルチスレッドでコピーしつつプログレスバーを出すことにした。
    デザイナの画面でBackgroundWorkerと言うのを作ってあげると、別スレッドが起こせる。
    このスレッドでコピーしつつ、プログレスバーの更新をしようと思ったら、「作ったのと違うスレッドが触ろうとしてますぜ」みたいなランタイムエラーが出る。
    マニュアルを見ると、コントロールがスレッドセーフではないから、別スレッドから直接触ってはいけないらしい。
    わざわざスレッドのProgressChangedみたいなイベントハンドラを実装して、そこからコントロールを触るようにする。
  • 配列のソート
    Javaで言うComparatorみたいなものとして、IComparerとか言うのがある。これの実装クラスを作ってあげて、Array.Sort()に配列と一緒に渡してあげるとソートができる。ディレクトリ内のファイルの一覧を更新日順でソートしてみたけど、この辺は自分で作らなくてもありそうなもんかな。
  • リファクタリングは便利
    さすが統合開発環境と言うべきか、一度フォームに貼り付けたコントロールの名前を変えたり、ソース上でメソッド名を右クリックして[リファクタ]→[名前の変更]を選ぶと簡単に名前が変更できる。
    eclipseとかでも当たり前だけど、便利な機能だ。
  • 設定の保存
    コピー元とコピー先のディレクトリをユーザ設定として保存したくて、調べてみた。
    マニュアルによると、デザイナのプロパティで設定の名前をつければあとは勝手にやってくれるようなことが書いてあるんだけど、これがなかなかわからなかった。
    VBだと自動でやってくれて、VB以外だと自前でSettings.Save()を呼ばないといけないと書いてある。
    でも、Settings.Save()とかやってもコンパイルエラーになってしまう。
    最終的に、hogehoge.Properties.Settings.Default.Save() で保存できることがわかった。(わかってから読み直すとマニュアルにもそう書いてあるんだけど、「Default」の部分が書けなくて悩んでいた)
  • インストーラの署名
    ビルドメニューから発行を選ぶとインストーラが作れる。
    このとき、プロジェクトの設定の署名にある「ClickOnceマニフェストに署名する」の設定にしたがってインストーラが署名される。
    デフォルトでオレオレ証明書が作られるんだけど、こいつの発行者が「マシン名\ユーザ名」になって変えられない。
    ユーザ名にリアルな名前を使っているので、これはあまり嬉しくない。
    Windowsの証明書ストアからも持ってこれるようなので、以前ブラウザ用のクライアント証明書を作ったときと同じように証明書を作ってストアにインポートし、それを選択してインストーラを作ってみた。
    これ、仕事でやってる人はオレオレ証明書ってわけにはいかないだろうし、どうやっているのかな?
まあ、いくつかはまった箇所はあったけど、それ以外は概ね直感的に作業できた。
後は、リポジトリにどのファイルを入れれば良いのかがわかって、かつVisualStudioがSVNのクライアントになれればいいんだけどなあ。
パッチ自体は、日本SpamAssassinユーザ会が開発しているらしいのだが、このサイトには3.1.4までのパッチしかない。
と以前書いたのですが、spamassassin-jpのメーリングリストに3.2.3対応のパッチアナウンスが流れました。
現時点ではまだ日本SpamAssassinユーザ会のトップページからはたどれないようです。
前回と同じ手順でインストールできました。
※ 前回もそうですが、portsとは別のパッチをあててインストールした場合、portupgradeから呼ばれるpkg_deinstall(?)ではサムが合わなくてファイルが削除されないため、一度手動でファイルを消さないといけませんでした。(全部のメールがspamになって焦った)
あとは、メーリングリストに流れた以下の内容に合わせて、local.cfを修正しました。
最低限、再定義すべきスコアののルールは次のものだけです。
    score FROM_EXCESS_BASE64 0
Fromヘッダで日本語を使う人が当たり前にいるので必須でしょう。
生JISヘッダを許容するのであれば次のものも追加してください。
    score SUBJ_ILLEGAL_CHARS 0
今後、UTF-8の日本語メールが増えてくることを考慮すると次のものも再定義
した方がよいのかもしれません。
    score MIME_BASE64_TEXT 1.0
また、署名の整形のためにスペースを多用しているとTVD_SPACE_RATIOにマッチ
するので、次のルールも追加しておくとよいでしょう。
    score TVD_SPACE_RATIO 0


コメントに書いたんだけど、気が付いたらports/japanese/p5-Mail-SpamAssassinでちゃんとnormalize_charsetに対応した版のportsがありました。
こいつが3.1.8-test8のパッチだったので、待っていれば3.2.3になりそうです。
で、ハンドブックとかをちゃんと読めば良いんだけど、そう言う事はせずにこのディレクトリのMakefileを読みながら3.2.3-test1に対応させてみました。
  1. Makefileの修正
    *** Makefile.ORIG       Fri Dec 28 15:49:14 2007
    --- Makefile    Fri Dec 28 16:09:32 2007
    ***************
    *** 5,11 ****
      # $FreeBSD: ports/japanese/p5-Mail-SpamAssassin/Makefile,v 1.3 2007/09/15 16:43:58 miwi Exp $
    
      PORTNAME=     Mail-SpamAssassin
    ! PORTVERSION=  3.1.8
      PORTREVISION= 1
      CATEGORIES=   japanese mail perl5
      MASTER_SITES= ${MASTER_SITE_APACHE:S/$/:apache/} ${MASTER_SITE_PERL_CPAN:S/$/:cpan/} \
    --- 5,11 ----
      # $FreeBSD: ports/japanese/p5-Mail-SpamAssassin/Makefile,v 1.3 2007/09/15 16:43:58 miwi Exp $
    
      PORTNAME=     Mail-SpamAssassin
    ! PORTVERSION=  3.2.3
      PORTREVISION= 1
      CATEGORIES=   japanese mail perl5
      MASTER_SITES= ${MASTER_SITE_APACHE:S/$/:apache/} ${MASTER_SITE_PERL_CPAN:S/$/:cpan/} \
    ***************
    *** 17,24 ****
      DIST_SUBDIR=  ja-spamassassin
      EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
    
    ! PATCH_SITES=  http://www.emaillab.org/spamassassin/patch/:JA
    ! PATCHFILES=   spamassassin-3.1.8-normalize-test8.patch:JA
      PATCH_DIST_STRIP=     -p1
    
      MAINTAINER=   fmysh@iijmio-mail.jp
    --- 17,24 ----
      DIST_SUBDIR=  ja-spamassassin
      EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
    
    ! PATCH_SITES=  http://www.spamassassin.jp/download/sa3.2/:JA
    ! PATCHFILES=   spamassassin-3.2.3-ja-test1.patch:JA
      PATCH_DIST_STRIP=     -p1
    
      MAINTAINER=   fmysh@iijmio-mail.jp
    ***************
    *** 174,183 ****
    
      DOCSDIR=      ${PREFIX}/share/doc/${PKGNAMEPREFIX}${PORTNAME}
      DATADIR=      ${PREFIX}/share/spamassassin
    ! DOCS=         CREDITS Changes INSTALL LICENSE NOTICE PACKAGING README STATUS TRADEMARK UPGRADE USAGE procmailrc.example
      DOCSSQL=      README README.awl README.bayes awl_mysql.sql awl_pg.sql bayes_mysql.sql bayes_pg.sql userpref_mysql.sql userpref_pg.sql
      DOCSLDAP=     README README.testing sa_test.ldif
    ! DOCJA=                spamassassin-3.1.8-normalize-test8.txt
      PORTDOCS=     ${DOCS} sql ldap ${DOCJA}
    
      USE_RC_SUBR=  sa-spamd.sh
    --- 174,183 ----
    
      DOCSDIR=      ${PREFIX}/share/doc/${PKGNAMEPREFIX}${PORTNAME}
      DATADIR=      ${PREFIX}/share/spamassassin
    ! DOCS=         CREDITS Changes INSTALL LICENSE NOTICE PACKAGING README TRADEMARK UPGRADE USAGE procmailrc.example
      DOCSSQL=      README README.awl README.bayes awl_mysql.sql awl_pg.sql bayes_mysql.sql bayes_pg.sql userpref_mysql.sql userpref_pg.sql
      DOCSLDAP=     README README.testing sa_test.ldif
    ! DOCJA=                spamassassin-3.2.3-ja-test1.txt
      PORTDOCS=     ${DOCS} sql ldap ${DOCJA}
    
      USE_RC_SUBR=  sa-spamd.sh
    
  2. distinfoの修正
    *** distinfo.ORIG       Fri Dec 28 15:52:38 2007
    --- distinfo    Fri Dec 28 16:04:48 2007
    ***************
    *** 1,12 ****
    ! MD5 (ja-spamassassin/Mail-SpamAssassin-3.1.8.tar.gz) = 20a3a6b651a89dcc70634715ca833996
    ! SHA256 (ja-spamassassin/Mail-SpamAssassin-3.1.8.tar.gz) = 01e5b0d78969cfb0580efb14a7a7212ed3af9f382829afcd61b97a91938831dd
    ! SIZE (ja-spamassassin/Mail-SpamAssassin-3.1.8.tar.gz) = 1173847
      MD5 (ja-spamassassin/tokenizer.pre) = 72b905b3e7ae7bcfef639bbffbeadb3a
      SHA256 (ja-spamassassin/tokenizer.pre) = 565c6aa234fd33c724e119ae10935d61a7d85c2b85520243b4a7d5cc9a06f04c
      SIZE (ja-spamassassin/tokenizer.pre) = 164
    ! MD5 (ja-spamassassin/spamassassin-3.1.8-normalize-test8.txt) = a45eeafbed2d316e4b4d184258df2788
    ! SHA256 (ja-spamassassin/spamassassin-3.1.8-normalize-test8.txt) = a94ddf5d3fe2f7cbdde44af04eada690ca0bb1643e2597b7d612479fe086c39d
    ! SIZE (ja-spamassassin/spamassassin-3.1.8-normalize-test8.txt) = 12808
    ! MD5 (ja-spamassassin/spamassassin-3.1.8-normalize-test8.patch) = 5d07043233324d4c3f136a2987a94759
    ! SHA256 (ja-spamassassin/spamassassin-3.1.8-normalize-test8.patch) = a4d470e7c687833d124c9eab2960bfa6ffff8b6f6205d7420ba4162008d296e7
    ! SIZE (ja-spamassassin/spamassassin-3.1.8-normalize-test8.patch) = 54747
    --- 1,12 ----
    ! MD5 (ja-spamassassin/Mail-SpamAssassin-3.2.3.tar.gz) = 2e356b70b9458b44a828c19f6e816521
    ! SHA256 (ja-spamassassin/Mail-SpamAssassin-3.2.3.tar.gz) = 2bf7635555dea4912512a32c7c567094ef264770b86029c49f653e97352efad8
    ! SIZE (ja-spamassassin/Mail-SpamAssassin-3.2.3.tar.gz) = 1202082
      MD5 (ja-spamassassin/tokenizer.pre) = 72b905b3e7ae7bcfef639bbffbeadb3a
      SHA256 (ja-spamassassin/tokenizer.pre) = 565c6aa234fd33c724e119ae10935d61a7d85c2b85520243b4a7d5cc9a06f04c
      SIZE (ja-spamassassin/tokenizer.pre) = 164
    ! MD5 (ja-spamassassin/spamassassin-3.2.3-ja-test1.txt) = ec19409451e9c850c8d7ccfd3d83a873
    ! SHA256 (ja-spamassassin/spamassassin-3.2.3-ja-test1.txt) = cc08cde62b1d86c2a2b80666c95f80668bf250f634694eaaa8f14515fecfbeb2
    ! SIZE (ja-spamassassin/spamassassin-3.2.3-ja-test1.txt) = 8476
    ! MD5 (ja-spamassassin/spamassassin-3.2.3-ja-test1.patch) = 7a18557a8becd468da9a5ea6e39dc439
    ! SHA256 (ja-spamassassin/spamassassin-3.2.3-ja-test1.patch) = 857cd382fa542841d1b290c2826a4bdf2912efd66e91f04752926e4bbcebce83
    ! SIZE (ja-spamassassin/spamassassin-3.2.3-ja-test1.patch) = 33377
    
  3. filesディレクトリの修正
    # cd /usr/ports/japanese/p5-Mail-SpamAssassin
    # mv files files.ORIG
    # cp -r /usr/ports/mail/p5-Mail-SpamAssassin/files .
    # cp files.ORIG/patch-rules-local.cf files/
    
とりあえずこれでインストールして動いているらしいことは確認できた。
Makefileの修正がかなりやっつけなので、真面目に ports/mail/とports/japaneseの違いを追わないとメンテナーに連絡とかできるレベルじゃないなあ。
はやく本家に全部マージされちゃえば良いのに。
portsからSpamAssassin 3.2.3 を入れると、コンパイルはすんなり通って使えるようになる。
でも、コンパイル時になんか流れていくので止めてみた。
checking module dependencies and their versions...

***************************************************************************
NOTE: the optional Mail::SPF module is not installed.

  Used to check DNS Sender Policy Framework (SPF) records to fight email
  address forgery and make it easier to identify spams.  (This is preferred
  over Mail::SPF::Query.)


***************************************************************************
NOTE: the optional IP::Country module is not installed.

  Used by the RelayCountry plugin (not enabled by default) to determine
  the domain country codes of each relay in the path of an email.


***************************************************************************
NOTE: the optional Net::Ident module is not installed.

  If you plan to use the --auth-ident option to spamd, you will need
  to install this module.


***************************************************************************
NOTE: the optional Mail::DomainKeys module is not installed.

  If this module is installed, and you enable the DomainKeys plugin,
  SpamAssassin will perform Domain Key lookups when Domain Key
  information is present in the message headers.  (Note that new versions
  of Mail::DKIM render this module superfluous.)


***************************************************************************
NOTE: the optional Mail::DKIM module is not installed.

  If this module is installed, and you enable the DKIM plugin,
  SpamAssassin will perform DKIM lookups when a DKIM-Signature
  header is present in the message headers.  (New versions of this module
  support both Domain Keys and DKIM, rendering Mail::DomainKeys obsolete.)

optional module missing: Mail::SPF
optional module missing: IP::Country
optional module missing: Net::Ident
optional module missing: Mail::DomainKeys
optional module missing: Mail::DKIM
この辺全部入れるとより強力になるのだろうか?
とりあえず、以下のports(依存関係でもっといろいろ入ったけど)をインストールしてみたら、SpamAssassinのmake時には何も文句を言われなくなった。
  • mail/p5-Mail-SPF
  • net/p5-IP-Country
  • net/p5-Net-Ident
  • mail/p5-Mail-DomainKeys
  • mail/p5-Mail-DKIM
でも、こいつらを有効にするには設定ファイル書かないといけないんだよなあ、きっと。
2007年12月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

このアーカイブについて

このページには、2007年12月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2007年11月です。

次のアーカイブは2008年1月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.1.1