fedora 10 で文字化けない vsftpd

redhat 系の OS にデフォルトでついている vsftpd のロギングが EUC-JP にしか対応してなくて、UTF-8 ではログが文字化けるのでどうにかしようっていうお話。

単にソースを拾って来て Build してもいいけどそれだけだとおもしろくないので rpm を作るところまでやりたい。
元々パッケージが提供されてるので srpm もある。

# cd /usr/local/src
# wget ftp://ftp.riken.jp/Linux/fedora/releases/10/Fedora/source/SRPMS/vsftpd-2.0.7-1.fc10.src.rpm
# yumdownload –source vsftpd
# rpm -ivh vsftpd-2.0.7-1.fc10.src.rpm
これで、src.rpm がインストールされる

次にパッチを作成する。
ログの文字化けの対策はFedora JPの掲示板にあった。
# cd ~/rpmbuild/SPECS/
# rpmbuild -bc vsftpd.spec
# cd ~/rpmbuild/BUILD
# cp vsftpd-2.0.7/logging.c vsftpd-2.0.7/logging.c.hack
# vi vsftpd-2.0.7/logging.c

163行目をコメントアウトする。

/* str_replace_unprintable(p_str, '?'); */

# echo “diff -up vsftpd-2.0.7/logging.c.hack vsftpd-2.0.7/logging.c” > vsftpd-2.0.7-logging_charset.patch
# diff -up vsftpd-2.0.7/logging.c.hack vsftpd-2.0.7/logging.c >> vsftpd-2.0.7-logging_charset.patch
# mv vsftpd-2.0.7-logging_charset.patch ~/rpmbuild/SOURCES/

次に spec ファイルの修正をする。
# cd ~/rpmbuild/SPECS
# vi vsftpd.spec

1行目を2行目に置換

Release: 1%{?dist}
Release: 2%{?dist}

以下は上の行の下に追加

Patch38: vsftpd-2.0.6-listen.patch
Patch39: vsftpd-2.0.7-logging_charset.patch
%patch38 -p1 -b .listen
%patch39 -p1 -b .hack

rpm を build する
# rpmbuild -ba vsftpd.spec

あとはできた rpm をインストールすれば完了
# rpm -Uvh ~/rpmbuild/RPMS/i386/vsftpd-2.0.7-2.fc10.i386.rpm

これで、EUC-JP 以外の charset でもログが文字化けすることなく見れます。
ただ、掲示板のほうにも書いてあったように、ログファイルに出力するところで印刷不能文字と判断したものを、? に置き換える処理を無理矢理やらないようにしているだけなので、問題がありそうです。
ただ、? に置き換えなければならないような文字ばファイルネームにも使えないので、そこまで気にする必要はないかも・・・

一応書いておくやつ。
この記事の内容を使用し、作成されたものに関して当方はいかなる責任も負わないものとします。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください