2009年5月22日 星期五

在CentOS使用srpm安裝vsftpd

今天維護VHOST主機時把SFTP轉換成FTP over SSL,使用yum的vsftpd後發現Filezilla可以連線但是無法取得目錄列表,訊息列顯示
Could not read from transfer socket: ECONNABORTED - Connection aborted

Google後發現這是vsftpd的Bug,在2.0.7版後修正了,但是CentOS內建的還是2.0.5,原本打算用Fedora10的rpm安裝,發現有相依性,於是使用Fedora10的srpm重新打包

下載SRPM
wget http://opensource.nchc.org.tw/fedora/linux/releases/10/Fedora/source/SRPMS/vsftpd-2.0.7-1.fc10.src.rpm

解開SRPM
rpm -ivh vsftpd-2.0.7-1.fc10.src.rpm

安裝相依的函式庫
yum install tcp_wrappers pam-devel libcap-devel

編輯spec檔案
vi /usr/src/redhat/SPECS/vsftpd.spec

將第50行由tcp_wrappers-devel改成tcp_wrappers
因為CentOS中tcp_wrappers-devel包還在tcp_wrappers裡面
BuildRequires: tcp_wrappers

打包RPM
rpmbuild -bb vsftpd.spec

打包的結果在
/usr/src/redhat/RPMS/i386/vsftpd-2.0.7-1.i386.rpm

接下來使用rpm指令安裝就好
rpm -ivh /usr/src/redhat/RPMS/i386/vsftpd-2.0.7-1.i386.rpm