httpd-2.4.3.tar.bz2をダウンロードして,展開して中を見てみたら,httpd.specがあった。しかも,Using Apache With RPM Based Systems (Redhat / CentOS / Fedora)というページもある。となれば,やはりrpmを作ってみるのが,CentOSを使い,ディストリのパッケージを使わないものの態度としては,正しい行ないだろう。ということで,Apache2.4.3のrpm作りに挑戦!! (爆)
長いです。いざ,覚悟!!!
それに取り掛かる前に,「鍵を信用する作業」や「鍵の信用を取り消す作業」の練習も含めて,この間やったシグネチャの確認をApacheでやってみる。
- ソースをダウンロードする。
$ wget http://ftp.tsukuba.wide.ad.jp/software/apache/httpd/httpd-2.4.3.tar.bz2
シグネチャをダウンロードする。
$ wget http://www.apache.org/dist/httpd/httpd-2.4.3.tar.bz2.asc - 以下のコマンドで,シグネチャの確認。正しい署名と確認された。
$ gpg –verify httpd-2.4.3.tar.bz2.asc - 現在よからぬ話は聞いていないので,一応,www.apache.orgの鍵を信用する作業をやってみる。
$ gpg –edit-key RSA鍵ID
————————————————————————————————————————
コマンド> trust <<— trustを入力
あなたの決定は? 5 <<— 一応5にしておく
本当にこの鍵を絶対的に信用しますか? (y/N) y <<— 一応yにしておく
コマンド> q <<— qを打って,gpg –edit-keyを抜ける。
———————————————————————————————————————— - もう一度,シグネチャの確認をしてみる。先ほどのメッセージの最後の3行は表示されなくなった。
$ gpg –verify httpd-2.4.3.tar.bz2.asc - 公開鍵の信用を取り消してみる。
$ gpg –delete-key RSA鍵ID
更にも一度,シグネチャの確認をしてみると,メッセージは元に戻っている。まっ,こんなとこだね。これで,備忘録の役目は果たせるから,今後,この件は書かない。
さて,rpmを作るにはrpm-buildがいるので,何はともあれ,これをインストールする。
$ sudo yum install rpm-build
では,Apacheのrpmのビルドに入る。
- $ rpmbuild -tb httpd-2.4.3.tar.bz2
をやったら,早速以下のメッセージが出た。「-devel」パッケージについては,ビルドのときだけしかいらないから,あとはアンインストールしていいと,上記のApache.orgのページに書いてあるのだが,結構な数に上るなあ。サーバ機と開発機は分けておくべきなんだろうか。今のところは,練習なので問題ないがその辺,セキュリティ面ではどうなのだろう。エラー: ビルド依存性の失敗:
autoconf は httpd-2.4.3-1.i386 に必要とされています
zlib-devel は httpd-2.4.3-1.i386 に必要とされています
libselinux-devel は httpd-2.4.3-1.i386 に必要とされています
apr-devel >= 1.4.0 は httpd-2.4.3-1.i386 に必要とされています
apr-util-devel >= 1.4.0 は httpd-2.4.3-1.i386 に必要とされています
pcre-devel >= 5.0 は httpd-2.4.3-1.i386 に必要とされています
openldap-devel は httpd-2.4.3-1.i386 に必要とされています
lua-devel は httpd-2.4.3-1.i386 に必要とされています
libxml2-devel は httpd-2.4.3-1.i386 に必要とされています
distcache-devel は httpd-2.4.3-1.i386 に必要とされています
openssl-devel は httpd-2.4.3-1.i386 に必要とされています地道に,インストール。
$ sudo yum install autoconf
$ sudo yum install zlib-devel
$ sudo yum install libselinux-devel
ここで,問題発生。
$ sudo yum install apr-devel
ディストリのパッケージが1.3.9-5になっている。BuildRequiresでは,上記の通り1.4.0以上だからまずい。 - Apacheから,tarballを落としてくる。シグネチャもちゃんと確認すること。
$ wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/apr/apr-1.4.6.tar.gz - 落としてきたのはgz方式だが,rpmbuildではアーカイブとして扱ってくれないようなので,一度展開し,
$ tar zxvf apr-1.4.6.tar.gz
bzip2形式に圧縮し直す。
$ tar cf – apr-1.4.6/ | bzip2 -c > apr-1.4.6.tar.bz2 - $ rpmbuild -tb apr-1.4.6.tar.bz2
エラー: ビルド依存性の失敗:
libtool は apr-1.4.6-1.i386 に必要とされています
doxygen は apr-1.4.6-1.i386 に必要とされていますなんだってさ。「どこまで続く泥濘ぞ」ダネ。
$ sudo yum install libtool
$ sudo yum install doxygen - 改めて,
$ rpmbuild -tb apr-1.4.6.tar.bz2
今度は通った。表示されたメッセージにより調べてみると,/home/centos/rpmbuild/RPMS/i386/に
apr-1.4.6-1.i386.rpm apr-devel-1.4.6-1.i386.rpm
ができている。cd コマンドでrpmのできたところに移動。
$ cd /home/centos/rpmbuild/RPMS/i386/
これをインストールする。
$ sudo rpm -Uvh apr-1.4.6-1.i386.rpm apr-devel-1.4.6-1.i386.rpm
終了後, cd でホームディレクトリに戻っておく。apr-develのインストにaprが必要だから,両方ともインストールしないとだめ。それにしても,Minimalインストールで,何も入っていないせいだろうけど,開発環境を整えるのが大変だ。devel用のコレクションか何かを入れたほうが早いかもしれないが,いらないものは入れないスタンスだから,ちょっと我慢してやらないとね。
- 同様に,
$ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-util-1.4.1.tar.gz
$ tar zxvf apr-util-1.4.1.tar.gz
$ tar cf – apr-util-1.4.1/ | bzip2 -c > apr-util-1.4.1.tar.bz2 - $ rpmbuild -tb apr-util-1.4.1.tar.bz2
エラー: ビルド依存性の失敗:
expat-devel は apr-util-1.4.1-1.i386 に必要とされています
libuuid-devel は apr-util-1.4.1-1.i386 に必要とされています
db4-devel は apr-util-1.4.1-1.i386 に必要とされています
postgresql-devel は apr-util-1.4.1-1.i386 に必要とされています
mysql-devel は apr-util-1.4.1-1.i386 に必要とされています
sqlite-devel >= 3.0.0 は apr-util-1.4.1-1.i386 に必要とされています
freetds-devel は apr-util-1.4.1-1.i386 に必要とされています
unixODBC-devel は apr-util-1.4.1-1.i386 に必要とされています
openldap-devel は apr-util-1.4.1-1.i386 に必要とされています
openssl-devel は apr-util-1.4.1-1.i386 に必要とされています
nss-devel は apr-util-1.4.1-1.i386 に必要とされていますこれまたすごい数だ。真面目な話,postgresql-develやsqlite-develなんかは,全然使わないと思うんだが,この辺も分かってきたら,SPECを弄れるようになりたいな。
- また,地道にインストール。
$ sudo yum install expat-devel
$ sudo yum install libuuid-devel
$ sudo yum install db4-devel
$ sudo yum install postgresql-devel
$ sudo yum install mysql-devel 依存関係で,openssl-develもここで,インストールされる。
$ sudo yum install sqlite-devel
$ sudo yum install freetds-devel
$ sudo yum install unixODBC-devel
$ sudo yum install openldap-devel
$ sudo yum install nss-devel - 改めて,
$ rpmbuild -tb apr-util-1.4.1.tar.bz2 - cd コマンドで,
/home/centos/rpmbuild/RPMS/i386/ に移動して,
$ sudo rpm -Uvh apr-util*
終了後, cd でホームディレクトリに戻っておく。 - Apacheの依存パッケージの続きのインストール。
$ sudo yum install pcre-devel
$ sudo yum install lua-devel
$ sudo yum install libxml2-devel
openssl-develはさっき入れたから,あとはdistcacheだけ。 - ところが,これがCentOS6.3のパッケージになかった。tarballを見に行ったが,展開してみても,SPECが入っていなくて手におえない。結局,Fedora17のsrc.rpmを拾ってきた。URLの枝番は18になってるね。なんでだろう。
$ wget ftp://ftp.riken.jp/Linux/fedora/development/18/source/SRPMS/d/distcache-1.4.5-23.src.rpm
これをリビルド。
$ rpmbuild –rebuild distcache-1.4.5-23.src.rpm
$ cd /home/centos/rpmbuild/RPMS/i386/
$ sudo rpm -Uvh distcache*
ホーム・ディレクトリに戻る。 - $ rpmbuild -tb httpd-2.4.3.tar.bz2
やっと,Apache2.4.3のrpmができたのでインストール。
$ cd /home/centos/rpmbuild/RPMS/i386/
$ sudo rpm -U httpd-2.4.3-1.i386.rpmやれやれと思ったら,
/etc/mime.types は httpd-2.4.3-1.i386 に必要とされています
が出たので,
$ sudo yum provides /etc/mime.types
と調べてみると,どうやらmailcapというパッケージを入れればいいらしい。
$ sudo yum install mailcap
改めて,
$ sudo rpm -U httpd-2.4.3-1.i386.rpm
httpd-2.4.3-1のインストール完了。一応,「It works!」表示までいかないと終わられません(爆)。
- Apacheのテストのために,80番ポートを開ける。
$ sudo /sbin/iptables -I INPUT 5 -p tcp –dport http -j ACCEPT #HTTP
$ sudo /sbin/iptables -L –line-number 変更の確認
$ sudo /sbin/service iptables save - BINDを入れていないので,名前解決のために,/etc/hostsにローカルのサーバ名と,IPアドレスを追加。
- $ sudo vi /etc/httpd/conf/httpd.conf
のServerNameをローカルなものに書き換え。
$ sudo service httpd restart
実は,ここで少しはまった。restartをrootでやらないとSocketエラーが出る。 - 自鯖Lan内のWin端末のブラウザから,ローカルのサーバ名で,アクセス。
「It works!」が無事表示された。
本日は,ここまで。