FreeBSD ports Broken

久しぶりに時間がとれたので、えいやっとFreeBSDなサーバーのportsを一気にupgradeしたらトラブル大発生。
一つはXFree86関連で、一連のPortsのうち、XFree86-Serverだけがpatch不良でmakeが通らない。
x11-server/XFree86-4-Server
4.5.0,2が、おそらくXFree86のソースパッケージが同じファイル名のままで更新されてしまったので、パッチが通らない。しかも、ftp.jp.freebsd.orgのdistfilesに入ってる…

久しぶりに時間がとれたので、えいやっとFreeBSDなサーバーのportsを一気にupgradeしたらトラブル大発生。

一つはXFree86関連で、一連のPortsのうち、XFree86-Serverだけがpatch不良でmakeが通らない。

x11-server/XFree86-4-Server 4.5.0,2が、おそらくXFree86のソースパッケージが同じファイル名のままで更新されてしまったので、パッチが通らない。しかも、ftp.jp.freebsd.orgのdistfilesに入ってるソースパッケージも更新されてしまっている。結局、一連のPortsのうちでServerだけが入らないので、この状態だと怖くてXFree86は動かせない。サーバーで良かったよ。クライアントマシンだったら致命的だな。

もう一つはSamba3。FreeBSD-4系列ではmakeできなくなっちゃってる。

SystemのKerberosで供給されるlibcryptoとOpenSSLで供給されるlibcryptoが整合性がとれないので、Active Directory SupportがONだとmakeできないよ、ってメッセージが出るんだけど、WITHOUT_ADS=onとかつけてもちゃんとスルーしてくれない。っていうか、初期設定だとoffだろうが。

この辺、グーグっても全然情報もないので、portsのupdate待ちかなあ。

英語版Palmのためのdelegate文字コード変換proxy

英語版Tungsten
T5をJaPonで日本語化してみたのだが、付属のWebブラウザがShiftJISしか認識しやがらないので、delegateを使って文字コード変換サーバーを立ち上げてみる。
重要なのは、ダイジェスト認証によって第三者の不正利用を防ぐこと。
1.delegateのインストール
delegateは汚いプログラムらしく、FreeBSDのportsはdistfilesももっていないので、本家のhttp://www.delegate.org/からportsのバージョンにあったものを持…

英語版Tungsten T5をJaPonで日本語化してみたのだが、付属のWebブラウザがShiftJISしか認識しやがらないので、delegateを使って文字コード変換サーバーを立ち上げてみる。

重要なのは、ダイジェスト認証によって第三者の不正利用を防ぐこと。

1.delegateのインストール

delegateは汚いプログラムらしく、FreeBSDのportsはdistfilesももっていないので、本家のhttp://www.delegate.org/からportsのバージョンにあったものを持ってくる。FreeBSDのportsはbz2を要求してたので、gunzip後にbzip2してbz2なアーカイブに変換した。

portinstall -M FORCE_BUILD=YES delegate

で一発オッケー。

2.delegate立ち上げshスクリプトの変更

/usr/local/etc/rc.d/delegate.shを用意する。
—-
#!/bin/sh

umask 027
if [ -x /usr/local/sbin/delegated ]; then

echo -n ‘ delegated’

/usr/local/sbin/delegated -P8800 -Txt
ADMIN=postmaster@bam-system.ddo.jp
CHARCODE=SJIS
CACHEDIR=/var/spool/delegate-nobody/cache
EXPIRE=1d
AUTH=proxy:pauth AUTHORIZER=-dgauth CRYPT=pass:proxyuser
RELIABLE=”-a/*”
SERVER=http
PROXY=localhost:8880
> /dev/null 2>&1

/usr/local/sbin/delegated -P8880 -Txt
ADMIN=postmaster@bam-system.ddo.jp
CHARCODE=JIS
CACHE=no
RELIABLE=”localhost”
SERVER=http
> /dev/null 2>&1

fi
—-
/var/spool/delegate-nobody/cacheをnobody:nobodyで掘っておかないと怒られるので注意。

CRYPTエントリーのproxyuserはdigest化のためのキーワードなので自由に選ぶ。

3.ユーザーの登録

登録は
delegated -Fauth -a username:password -dgauth CRYPT=pass:proxyuser
削除は
delegated -Fauth -d username -dgauth CRYPT=pass:proxyuser

4.実行

再起動すればdelegatedが起動する。ファイヤーウォールで8800を通すのを忘れないこと。

MRTGの設定覚書

FreeBSDのルーターの設定をやり直してから、MRTGでSNMPの情報が取得できなくなっていた。
net-snmpをインストールしてsnmpwalkをかけても返事が返ってこないことから、症状はSNMPのパケットがうまく出ていないらしい。
で、ipfwでSNMPのudpポートを開く設定に。ここで問題なのは、udpは本来一方的垂れ流しだが、SNMPのqueryはoutgoingで適当に選ばれたportから対象のport
161にqueryが飛ぶと、返事が対象のport 161からoutgoing…

FreeBSDのルーターの設定をやり直してから、MRTGでSNMPの情報が取得できなくなっていた。

net-snmpをインストールしてsnmpwalkをかけても返事が返ってこないことから、症状はSNMPのパケットがうまく出ていないらしい。

で、ipfwでSNMPのudpポートを開く設定に。ここで問題なのは、udpは本来一方的垂れ流しだが、SNMPのqueryはoutgoingで適当に選ばれたportから対象のport 161にqueryが飛ぶと、返事が対象のport 161からoutgoingで選ばれたportに帰ってくるということ。だから単純にport 161へのoutgoingを許可しただけだと、返事が入ってこないのでNo Responseになってしまう。

で、ふと思い出したのが、これってntpの場合と同じだな。

で、ipfwの設定で以下の設定を追加する。

ipfw add pass udp from ${iip} to any 161 keep-state

keep-stateって指定がいったい何の役に立つのかと思っていたが、ここで役に立つのね。keep-stateを指定しておくとoutgoingしたudpに対する返事が帰ってくることを想定してしばらくの間、firewallに穴を開けておいてくれるわけだ。

で、めでたくsnmpwalkでルーターの設定が取得できるようになった。

あとはMRTGの設定を書くだけか。

NWN Linux Server on FreeBSD

NWNのLinux用サーバーをFreeBSDで動かす。結論から言うと、普通に動く。
まず、BioWareからServer用パッケージの最新版を落とす。その中で必要なファイルは一つだけ。
linuxdedserver166.tar.gz
これ以外のファイルはWindows版の日本語NWNから持ってこないと、サーバーが日本語の言語Signatureにならないので、日本語Clientでプレーできない。
次にサーバーにNWNのデータを格納するフォルダーを作る。NWNのLinuxサーバーはユーザー権限で…

NWNのLinux用サーバーをFreeBSDで動かす。結論から言うと、普通に動く。

まず、BioWareからServer用パッケージの最新版を落とす。その中で必要なファイルは一つだけ。

linuxdedserver166.tar.gz

これ以外のファイルはWindows版の日本語NWNから持ってこないと、サーバーが日本語の言語Signatureにならないので、日本語Clientでプレーできない。

次にサーバーにNWNのデータを格納するフォルダーを作る。NWNのLinuxサーバーはユーザー権限で動かしても構わないので、どんなユーザーでどこに掘っても構わない。

そのフォルダに、Windows版のインストールディレクトリから以下のファイルおよびフォルダを転送する。転送前にWindows版のバージョンをLinuxサーバーのバージョンと合わせて置くこと。

chitin.key
data/*
database/*
dialog.tlk
dialogf.tlk
hak/
modules/
nwm/
nwplayer.ini (Windows版でマルチプレイヤーサーバーの設定をしておくとそのまま使える)
override/
patch.key

以上のファイルを転送したら、最後にこのフォルダにLinuxサーバーのアーカイブの中身を展開する。

次にアーカイブから展開されたfixinstallスクリプトを走らせる。Linux用なので、shellがbashになっているので、bashがインストールされてなければインストールすること。また、スクリプト内の実行shellの指定が/bin/bashになっているが、FreeBSDのportsでインストールすると/usr/local/bin/bashで入るので、これも変更してから実行する。

fixinstallで足りないフォルダ等を見つけると警告してくるので、その場合は適宜Windows版のフォルダから転送すればよい。

全てが終われば、ユーザー権限でnwserverを実行すればそれで終わり。

nwplayer.iniで指定してあるポートでincoming packetが通過するようにファイヤーウォールを設定することを忘れないこと。

このサーバーはstdin/outでコマンドでコントロール出来るので、出来ればconsoleにする端末を別に用意してモニターしてあげるとよい。コマンド解説はServer用パッケージに含まれるreadme.linuxserver.txtを参照のこと。-quietオプションで完全なサーバーになるが、この場合はautosaveしか働かなくなるので注意。

モジュールとハックはそれぞれmodules/とhak/に入れる。ハックはファイル名を変更しないこと。モジュールはファイル指定が面倒になるので、簡単なファイル名に変更した方がよい。

COREBlog 1.2 Updated

いつの間にか、GW中にCOREBlogがVer.1.2にアップデートされていることに今更気付く。
で、当然ながらUpdateされた内容を吟味してこのサーバーを1.11から1.2に変更するかどうか、を考えないといけないわけだが・・・。
Changelogがねえよ。作者のページでCOREBlog
1.2の変更点は詳しくはChangelogを見てね、って書いてるのにリンクも張ってないし、本家配布元でChangelogをクリックすると、今回のアップデートで同梱されたPloneとの親和性を高めるSkin…

いつの間にか、GW中にCOREBlogがVer.1.2にアップデートされていることに今更気付く。

で、当然ながらUpdateされた内容を吟味してこのサーバーを1.11から1.2に変更するかどうか、を考えないといけないわけだが・・・。

Changelogがねえよ。作者のページでCOREBlog 1.2の変更点は詳しくはChangelogを見てね、って書いてるのにリンクも張ってないし、本家配布元でChangelogをクリックすると、今回のアップデートで同梱されたPloneとの親和性を高めるSkinの使い方について書いてあるだけ。わしゃPloneなんか使ってないから、それ以外で何が変更されたのか知りたいのに。

まあ、Zope家さんから見れば、ソースも見ないようなヘタレユーザーなんか知らん、ということなんだろうが、COREBlogはZope普及の起爆剤、とか言っておいて、まともなChangelogも提示しない様なものは決して普及しないと思うんだが。

ということで今回はアップデートは見送り。Zopeってのはなかなか面白いいいシステムだとは思うが、こういうところでいちいち「なんでよ?」って思っちゃうんだよなあ。まあ、それを言うならなんらかの手段でContributeしろ、って言われて堂々巡りなんだろうけど。ってそれってLinuxのタコ論争の繰り返しじゃん。

COREBlogユーザーにページをいじらせる

COREBlogを貸し出してるユーザーがCSS等をいじりたいといってきたので、Contentsタブを有効にするためのSecurity設定を模索。
まずManage ZCatalog
Entriesを有効にする。これでContentsタブが見える様になる。
次に、ドキュメントの内容やCSSの内容をいじれるようにするためにChange
DTML DocumentsとChange DTML
Methodsを有効にする。これらを有効にしていないと、ContentsタブでファイルをクリックしてもView…

COREBlogを貸し出してるユーザーがCSS等をいじりたいといってきたので、Contentsタブを有効にするためのSecurity設定を模索。

まずManage ZCatalog Entriesを有効にする。これでContentsタブが見える様になる。

次に、ドキュメントの内容やCSSの内容をいじれるようにするためにChange DTML DocumentsとChange DTML Methodsを有効にする。これらを有効にしていないと、ContentsタブでファイルをクリックしてもViewするだけになってしまう。

他にもChangeを有効にした方がいいものもあるかもしれないが、CSSやページ構成をいじるだけならこの二つで十分だろう。

Safari 2.0で日本語自動判別失敗?

Mac OS
XをTigerにアップデートして、結果としてSafariのバージョンが2.0になってから、某所で運用している掲示板の日本語コードの判別に失敗するようになった。
その掲示板は、ApacheのDefaultCharsetも有効にせず、CGIからのCharsetも日本語コードを特に指定していない。DefaultCharsetを有効にすると、他のコードを使うCGIで問題になるし、CGIから直接返すとなぜかApacheが書き換えようとしてうまくいかない。
で、仕方なく各ブラウザの日本語コード…

Mac OS XをTigerにアップデートして、結果としてSafariのバージョンが2.0になってから、某所で運用している掲示板の日本語コードの判別に失敗するようになった。

その掲示板は、ApacheのDefaultCharsetも有効にせず、CGIからのCharsetも日本語コードを特に指定していない。DefaultCharsetを有効にすると、他のコードを使うCGIで問題になるし、CGIから直接返すとなぜかApacheが書き換えようとしてうまくいかない。

で、仕方なく各ブラウザの日本語コードの判別能力に期待していたわけだが、これまでSafariも1.3までは自動できっちりと認識していたのに、2.0のなって判別しないでDefault設定のShiftJISだと思い込むようになった。ていうか、2.0から自動判別やめてない?

仕方ないので、CGIがHEADセクションでMETAタグのHTTP-EQUIVでContent-Typeを返すようにCGIを書き換えて対処。

CoreBlogで検索を可能にする

CoreBlogで日本語の検索を可能にすることにした。
とりあえず、単語分割用のSplitterで日本語が通るものを入れないといけないのだが、無駄が多いのを承知で単純な単語分割をするejsplitterを入れることにする。
といっても、ソースを取ってきて、Productディレクトリ(/usr/local/www/Zope/Product)で展開。ZopeのコントロールパネルからZopeを再起動して終わり。
次に、既に日本語非対応のSplitterで作られている分割単語の辞書であるlexiconを…

CoreBlogで日本語の検索を可能にすることにした。

とりあえず、単語分割用のSplitterで日本語が通るものを入れないといけないのだが、無駄が多いのを承知で単純な単語分割をするejsplitterを入れることにする。

といっても、ソースを取ってきて、Productディレクトリ(/usr/local/www/Zope/Product)で展開。ZopeのコントロールパネルからZopeを再起動して終わり。

次に、既に日本語非対応のSplitterで作られている分割単語の辞書であるlexiconを入れ替える。

まずはCoreBlogのContentでlexiconを削除する。次に、ZCTextIndexをAddして、idをlexicon、titleは空にしておいて、Splitterでejsplitter UTF-8を選択する。最後に、EntryからRecatalogを押すと、単語分割がやり直される。

Contentからlexiconを選んでQueryタブを選ぶと、ちゃんと日本語が分割されたか見ることが出来る。さすがに、辞書を使わず分割してるので、非常に馬鹿っぽいが、簡易検索には十分だろう。

これをCoreBlogから利用できる用にする為には、Content/modulesのなかのindex_htmlを開いて、検索部分でコメントアウトされてる部分を有効にするだけでいい。

Moblogも出来るようにしてみる

FreeBSDのportsでpython &
zopeをインストールしただけでは日本語が化けてしまうので、JapaneseCodecとpykfをインストール。といっても、portsではJapaneseCodecはzope用にinstallされるpython2.3でなくてpython2.4を要求するし、pykf自体はそもそもない。というわけで、ソースサイトからソースを取ってくる。
どちらも、展開してからそのディレクトリに移動して以下のcommandを入れるだけでinstall完了。pythonが2…

FreeBSDのportsでpython&zopeをインストールしただけでは日本語が化けてしまうので、JapaneseCodecとpykfをインストール。といっても、portsではJapaneseCodecはzope用にinstallされるpython2.3でなくてpython2.4を要求するし、pykf自体はそもそもない。というわけで、ソースサイトからソースを取ってくる。

どちらも、展開してからそのディレクトリに移動して以下のcommandを入れるだけでinstall完了。pythonが2.3と2.4の両方入っている場合はinstallするpythonを間違えないようにしないといけないかもしれない。

/usr/local/bin/python2.3 setup.py install

後はmoblog用のpop3アカウントを用意して読み込み用のURLを叩いてあげれば読み込まれる。

Blogタイトルはメールタイトルが使われる。パスワードはメール本文一行目に書く。その次の行は無視されるので、一行あけて本文を書く。カテゴリーはおそらくmoblogセッティングで設定したデフォルトカテゴリーが使われると思われ。

ほんとのところどうなのさ?

L2TPv3がらみのVPN設計をしているついでで、IPSecによるVPNにもちょこちょこ手を出しているんだけど・・・。
FreeBSDのカーネルをIPSec対応にするためのオプションの指定が、
options IPSEC options IPSEC_ESP options IPSEC_DEBUG
となっているドキュメントが検索でわらわら出てくるんだけど、最後のIPSEC_DEBUGって本当にいるのか?
ごく稀に上の二行しか書いていないドキュメントも出てくるし、どっかの誰かがわけもわからず三つと…

L2TPv3がらみのVPN設計をしているついでで、IPSecによるVPNにもちょこちょこ手を出しているんだけど・・・。

FreeBSDのカーネルをIPSec対応にするためのオプションの指定が、

options IPSEC
options IPSEC_ESP
options IPSEC_DEBUG

となっているドキュメントが検索でわらわら出てくるんだけど、最後のIPSEC_DEBUGって本当にいるのか?

ごく稀に上の二行しか書いていないドキュメントも出てくるし、どっかの誰かがわけもわからず三つとも入れたのを真に受けてみんなそれを馬鹿正直に書き写してるような気がしてならない。