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