【Debian】制作支持GBK的VSFTPD安装包

Posted on Sat 10 October 2009 in 我用(IT)

起因

为了方便xp和ubuntu直接共享文件,决定装个ftp,看大家都比较喜欢vsftpd,没多想,就随大流吧。
直接安装,改/etc/vsftpd.conf,重启,还是比较顺的。 

sudo apt-get install vsftpd
sudo /etc/init.d/vsftpd restart

用cuteftp和ie登录,发现中文乱码。

问题定位

google了一下,原来是因为我本地设置的是zh_CN.UTF-8,vsftpd也继承了这个编码,而常见的ftp客户端是不会用utf8显示的。
有两个解决方案,一个是把本地设置改成GBK;另外一个是打一个补丁,让vsftpd支持utf8到gbk的转码。
方案一看着简单,但对本地影响太大;那就方案二了,为了依然依托于Debian的packaging系统,干脆做个deb安装包吧。

制作vsftpd_2.0.7.deb

准备源文件和依赖库
  1. 下载源
    • - download debian source
      sudo apt-get source vsftpd
      下载后本地文件:
      vsftpd-2.0.7                    //带debian信息的文件夹
      vsftpd_2.0.7-0ubuntu1.diff.gz //patch
      vsftpd_2.0.7-0ubuntu1.dsc
      vsftpd_2.0.7.orig.tar.gz //原版源
  2. 安装依赖库
    • - build dependance
      sudo apt-get build-dep vsftpd
打补丁
  1. 从http://bugs.gentoo.org/200811下载对2.0.7的补丁
    • net-ftp/vsftpd patches (convert encoding , UTF8 FEAT & logging in Chinese):

  2. 执行
    • patch < vsftpd-2.0.7-encoding.patch
  3. 修改debian的补丁wifexited-const.patch
    • vi debian/patches/wifexited-const.patch
      实际观察sysutil.c,由于打了上个补丁,位置有改变
打新包并且安装
- build
sudo dpkg-buildpackage -rfakeroot -uc -b

- install own build def
sudo dpkg -i vsftpd_2.0.7-0ubuntu1_i386.deb
增加配置
# for charset
charset_filter_enable=YES
charset_server=UTF8
charset_client=GB18030

Deb安装包下载

如果懒得照此操作,可以直接下载打好补丁的vsftpd_2.0.7