2013/12/27(Fri)mod_uploaderをFedora20 + Apache2.4系で動作させるパッチ
2013/12/27 23:14
以前、コンパイルを試みるも失敗していたが、その後どうですか?とコメントを頂いたのでじっくり読んでみて、パッチを作りFedora20 + Apache2.4.6環境で動作することを確認したのでメモ。
追記:v3.2.0でApache 2.4.xがサポートされました
2014年8月にリリースされた、mod_uploader v3.2.0でApache 2.4.xの動作がサポートされたようです。公式サイトからソースをダウンロードしてmakeすればよいですが、例によってrpmを作りました。ダウンロードはこちらより。
環境
$ cat /etc/fedora-release Fedora release 20 (Heisenbug) $ uname -r 3.12.5-302.fc20.i686+PAE $ httpd -V Server version: Apache/2.4.6 (Fedora) Server built: Oct 31 2013 17:11:43 Server's Module Magic Number: 20120211:23 Server loaded: APR 1.4.8, APR-UTIL 1.5.2 Compiled using: APR 1.4.8, APR-UTIL 1.5.2 Architecture: 32-bit Server MPM: prefork threaded: no forked: yes (variable process count) Server compiled with.... -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=256 -D HTTPD_ROOT="/etc/httpd" -D SUEXEC_BIN="/usr/sbin/suexec" -D DEFAULT_PIDLOG="/run/httpd/httpd.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="conf/mime.types" -D SERVER_CONFIG_FILE="conf/httpd.conf" $ g++ --version g++ (GCC) 4.8.2 20131212 (Red Hat 4.8.2-7) Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
準備
rpmbuild用のディレクトリを作っておき、まずSourceForgeからダウンロードできるmod_uploader-3.1.1-1.src.rpmを準備。
$ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
$ cd ~/rpmbuild/SRPMS
$ rpm2cpio mod_uploader-3.1.1-1.src.rpm | cpio -i
$ mv mod_uploader.spec ../SPECS/
$ mv mod_uploader-3.1.1.tgz ../SOURCES/
そしてこのパッチを当ててからビルドするように変更する。$ ls ~/rpmbuild/SOURCES/ mod_uploader-3.1.1.tgz mod_uploader-3.1.1-f20fix.patch $ vi ~/rpmbuild/SPECS/mod_uploader.spec
--- mod_uploader_org.spec 2013-01-02 15:20:06.958564998 +0900 +++ mod_uploader.spec 2013-12-27 16:59:39.862748811 +0900 @@ -17,6 +17,8 @@ BuildRequires: gcc-c++, make, libtool, httpd-devel, ImageMagick-c++-devel Requires: httpd, ImageMagick-c++ +Patch1: mod_uploader-3.1.1-f20fix.patch + %description mod_uploader is a file upload application works as Apache module. The following features are provided: @@ -28,6 +30,7 @@ %prep %setup -q -n %{name}-%{version} +%patch1 -p1 %{__cat} <<EOF >uploader.conf LoadModule uploader_module modules/mod_uploader.so
リビルド
$ cd ~/rpmbuild/SPECS/ $ rpmbuild -bb mod_uploader.spec (略) 書き込み完了: /home/kero/rpmbuild/RPMS/i686/mod_uploader-3.1.1-1.i686.rpm 書き込み完了: /home/kero/rpmbuild/RPMS/i686/mod_uploader-debuginfo-3.1.1-1.i686.rpm (略) $ sudo rpm -e mod_uploader-3.1.1-1.i686 警告: /etc/httpd/conf.d/uploader.conf は /etc/httpd/conf.d/uploader.conf.rpmsave として保存されました。 $ sudo rpm -ivh ~/rpmbuild/RPMS/i686/mod_uploader-3.1.1-1.i686.rpm
ダウンロード
x86_64などはご自身でビルド下さい。なお、パッチ及びRPMバイナリの動作は保証しません。自己責任にてご使用下さい。mod_uploader-3.1.1-f20fix.patch
mod_uploader-3.1.1-1.i686.rpm
パッチ内容
ちょっとパッチ箇所に自信がないので、軽く説明。間違ってたり、改善提案があればコメント下さい。- ApacheResponse.h
- struct conn_rec構造体の通信先IPアドレスを格納するメンバー名がs/remote/client/
- File.h
- 未使用変数の削除
- uploader_util.h
- 三項演算子の書き方が変なような?不要な代入文を削除
- ApacheLogger.cpp
- Apache 2.2->2.4のAPI変更点にまとめられているログ周りの変更を反映
そして、ap_log_*関数の第3引数にAPLOG_MODULE_INDEXを追加
- ApacheRequestReader.cpp, ApacheResponseWriter.cpp
- キャスト警告の抑制(もうちょっとうまい手がありそうな気はするが、Apache Moduleの作り方を勉強しないといけなさそうなのでパス…)
- Auxiliary.cpp, RFC1867Parser.cpp, RFC2822Parser.cpp
- this->の追加、キャストの調整
追記:mod_uploader 3.2.0
mod_uploader 3.2.0のRPMと、それを作るためのSPECファイルはこちら。mod_uploader-3.2.0-1.i686.rpm
mod_uploader_3.2.0.spec