突然、職場のFreeBSDマシンのsamba共有が見えなくなった。正確にはコマン
ドラインでローカルデータをコピーすることはできるけど、エクスプローラで表示が
できないという症状。sambaのlogを見てみると、ユーザー認証が完了した
後に"INTERNAL ERROR"の文字。エクスプローラで表示するファイルのリストを取得し
ようとした時に落ちている感じ。
sshで入って、sambaで公開しているディレクトリでlsかけると、なんか文字化けした
ファイルが2つ。"ls|jless"として見ると、この化けたファイルが日本語で表示さ
れ、逆にsamba経由で書き込んだ日本語名のファイルが文字化けする。ということ
で、どうもShift JISのファイル名で書き込まれている模様。同じディレクトリを
http/ftpでもアクセスできるようにしてるので、Windows標準のコンソールクライア
ントからftp経由でアップロードしたらしい。
該当ファイルをリネームすると問題は解消。で、今後の方策を考える。とりあえず、
ぐぐってみたらProFTPD iconv() 文字コード変換パッチを発見。GNU libiconvを使えば
FreeBSDでも使えそうな感じ。ということで、FreeBSDのports用のad hocなpatch。
diff -crN proftpd/Makefile proftpd-i18n/Makefile**************
159,164 ****
- 159,176 ----
MODULES:=${MODULES}:mod_ifsession
.endif
- # for mod_codeconv
- .if defined(WITH_CODECONV)
- USE_ICONV= yes
+
PATCH_SITES= http://www.hakusan.tsg.ne.jp/tjkawa/software/misc/pr
oftpd-iconv/pack/
- PATCHFILES= proftpd-1.3.0-iconv.patch.gz
- PATCH_DIST_STRIP= -p1
- INCLUDEDIRS:=${INCLUDEDIRS}:${LOCALBASE}/include
- PROFTPD_LIBS+= -L${LOCALBASE}/lib -liconv
- MODULES:=${MODULES}:mod_codeconv
- .endif
# Keep this here below, in case similar constructs need to be made
CONFIGURE_ENV+= "LIBS=${PROFTPD_LIBS}"
diff -crN proftpd/distinfo proftpd-i18n/distinfo**************
1,3 ****
- 1,6 ----
MD5 (proftpd-1.3.0.tar.bz2) = fae47d01b52e035eb6b7190e74c17722
SHA256 (proftpd-1.3.0.tar.bz2) =
83f220cba64455a2b1701b97ce9896f66a0020b179c50daf4860cdf362464ffe
SIZE (proftpd-1.3.0.tar.bz2) = 1386086
- MD5 (proftpd-1.3.0-iconv.patch.gz) = 9fd8b774ca475eb7f3a46ae14eb7c9be
- SHA256 (proftpd-1.3.0-iconv.patch.gz) =
eefba1eb3ae281fa04cb8202160f9cfa4c20b70217caa09f402251d6e7ced713
- SIZE (proftpd-1.3.0-iconv.patch.gz) = 3112
上記のpatchをports/ftp/proftpdに当てて、"make WITH_CODECONV=YES install"で、
mod_codeconv対応ProFTPdがインストールされる。
samba3と併用しているなら、WITH_EXTRA_PATCH=YESな状態のGNU libiconvがインス
トールされていると思うので、proftpd.confに
CharsetLocal EUC-JP-MS
CharsetRemote CP932
を追加。あと、ProFTPdのデフォルトだとGMTで表示されるため、samba経由の場合と
時間が違うのが気持ち悪いので、
TimesGMT off
も追加。
後は、元々使ってたFreeBSD標準のftpdを無効にするため、/etc/inetd.confをftpの
行をコメントアウトして、inetdを再起動。その後、proftpdを起動して、作業完了。
快適すぎる。いや、もっと早く気付くべきだった。