CentOS6の練習-#10(Apacheのrpmを作る)。

 httpd-2.4.3.tar.bz2をダウンロードして,展開して中を見てみたら,httpd.specがあった。しかも,Using Apache With RPM Based Systems (Redhat / CentOS / Fedora)というページもある。となれば,やはりrpmを作ってみるのが,CentOSを使い,ディストリのパッケージを使わないものの態度としては,正しい行ないだろう。ということで,Apache2.4.3のrpm作りに挑戦!! (爆)

 長いです。いざ,覚悟!!!

 それに取り掛かる前に,「鍵を信用する作業」や「鍵の信用を取り消す作業」の練習も含めて,この間やったシグネチャの確認をApacheでやってみる。

  1. ソースをダウンロードする。
       $ 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
  2. 以下のコマンドで,シグネチャの確認。正しい署名と確認された。
       $ gpg –verify httpd-2.4.3.tar.bz2.asc
  3. 現在よからぬ話は聞いていないので,一応,www.apache.orgの鍵を信用する作業をやってみる。
       $ gpg –edit-key RSA鍵ID
         ————————————————————————————————————————
         コマンド> trust  <<— trustを入力
         あなたの決定は? 5  <<— 一応5にしておく
         本当にこの鍵を絶対的に信用しますか? (y/N) y  <<— 一応yにしておく
         コマンド> q  <<— qを打って,gpg –edit-keyを抜ける。
         ————————————————————————————————————————
  4. もう一度,シグネチャの確認をしてみる。先ほどのメッセージの最後の3行は表示されなくなった。
       $ gpg –verify httpd-2.4.3.tar.bz2.asc
  5. 公開鍵の信用を取り消してみる。
       $ gpg –delete-key RSA鍵ID
    更にも一度,シグネチャの確認をしてみると,メッセージは元に戻っている。

    まっ,こんなとこだね。これで,備忘録の役目は果たせるから,今後,この件は書かない。

 さて,rpmを作るにはrpm-buildがいるので,何はともあれ,これをインストールする。
   $ sudo yum install rpm-build

 では,Apacheのrpmのビルドに入る。

  1.    $ 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以上だからまずい。

  2. Apacheから,tarballを落としてくる。シグネチャもちゃんと確認すること。
       $ wget http://ftp.yz.yamagata-u.ac.jp/pub/network/apache/apr/apr-1.4.6.tar.gz
  3. 落としてきたのは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
  4.    $ 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

  5. 改めて,
       $ 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用のコレクションか何かを入れたほうが早いかもしれないが,いらないものは入れないスタンスだから,ちょっと我慢してやらないとね。

  6. 同様に,
       $ 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
  7.    $ 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を弄れるようになりたいな。

  8. また,地道にインストール。
       $ 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
  9. 改めて,
       $ rpmbuild -tb apr-util-1.4.1.tar.bz2
  10. cd コマンドで,
    /home/centos/rpmbuild/RPMS/i386/ に移動して,
       $ sudo rpm -Uvh apr-util*
    終了後, cd でホームディレクトリに戻っておく。
  11. Apacheの依存パッケージの続きのインストール。
       $ sudo yum install pcre-devel
       $ sudo yum install lua-devel
       $ sudo yum install libxml2-devel
    openssl-develはさっき入れたから,あとはdistcacheだけ。

  12. ところが,これが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*
    ホーム・ディレクトリに戻る。
  13.    $ 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!」表示までいかないと終わられません(爆)。

  1. 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
  2. BINDを入れていないので,名前解決のために,/etc/hostsにローカルのサーバ名と,IPアドレスを追加。
  3.    $ sudo vi /etc/httpd/conf/httpd.conf
    のServerNameをローカルなものに書き換え。
       $ sudo service httpd restart
    実は,ここで少しはまった。restartをrootでやらないとSocketエラーが出る。
  4. 自鯖Lan内のWin端末のブラウザから,ローカルのサーバ名で,アクセス。
    「It works!」が無事表示された。

 本日は,ここまで。

「CentOS6の練習-#10(Apacheのrpmを作る)。」への8件のフィードバック

  1. こんにちは
    俺も2.4.7でためしましたが開発関係のパッケージがないとかエラーがでてきついです。さてphpかとおもったらremiのepelとかもう面倒くさくてソースからビルドしてインストールする方が早いです。

    It worksが出たんで次はphpを入れてみようかと思います。

    1. わーっ,くりくりさん,ごめんなさい。

      このコメント,全く気づいていませんでして。今日,他の件で,コメントを見直していて,これに気づきました。

      WPから連絡メールが来ていませんでした。WPが連絡してくれないと,古い記事への書き込みはなかなか気づきませんねぇ(溜息)。

      どうやら,yahoo.deから,パスワードリセットが来た頃らしいです。リセットはちょくちょく来るんです。yahoo.deはブログ関連でいろいろなことに使っているアカウントなのですが,何か日頃と違う動きをすると,すぐにロックがかかってしまい,リセットのお願いが来ます。

      ある意味,だからこそ,信用して使っているわけですが,今回は,停電でルータが再起動されてIPが変わったことが関係しているのではないかと思います。

      で,リセットが済むまでに書き込みがあった場合,連絡メールが来ません。一週間以上もほったらかしになって,申し訳ありませんでした。

      > It worksが出たんで次はphpを入れてみようかと思います。

      一週間以上前のお話なので,もう,お済かもしれませんが,いかがでしたか。

  2. >一週間以上前のお話なので,もう,お済かもしれませんが,いかがでしたか。

    今日の夜再度apache2.4のrpmファイルをつくってphp5.5.7をyumでいれようとしましたが、エラーでインストールできません。
    ビルドもyumもcentos6はapache2.2だけど、インストールしてあるのは2.4ですよってエラーがでます。

    centos7をまつしかないですね。

    1. くりくりさん,こんばんは。

      お返事が遅くなってしまいましたが,VMware(R) Player6.0.1のCentOS6.5上でやってみました。Apacheはhttpd-2.4.7.tar.bz2からrpmを作り,インストールしました。すっかり忘れていたのでこれに時間がかかってしまいました。考えたら,使うとこまで行っていないので,PHP5.5だけ,インストールすればよかったのかなと,今頃になって思っています(汗)。もっとも, rpm -U httpd-2.4.7-1.i386.rpm をやったときに, httpd-tools-2.2.15-29.el6.centos.i686 のゴッツンコが出ましたので,これも後で関係あったのかもしれません。

      その後, rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm を入れまして,
      yum install php55w-common
      をやりました。el6/latest.rpm については,TrippyBoyさんのところを参考にしましたが,CentOS6.5ですので,el6を使いました。
      うちの場合は元が入っていないので,replaceプラグインは入れていません。

      使うところまで行っていませんが,yum install php55w-opcacheも通るだけは,通りました。
      ご報告だけですが,お役に立てれば幸いです。

      書き忘れです。
      もともとのhttpdパッケージは削除しました。これが,うまくいった理由なのかもしれません。

  3. おはようございます。
    開発ツールとbaseのみでCentOSをつくり
    2.4.7のrpmを作成してインストール。
    そうしてwebtaticからyumでインストールすると
    Requires: httpd-mmn = 20051115
    Installed: httpd-2.4.4-1.x86_64 (installed)
    httpd-mmn = 20120211
    Available: httpd-2.2.15-26.el6.centos.x86_64 (base)
    httpd-mmn = 20051115
    ソースからphpをビルドしてもapxの関係でビルドエラーですね。

    >もともとのhttpdパッケージは削除しました。これが,うまくいった理由なのかもしれません。

    ここいら辺をちとためしてみましょう。

    1. こんにちは。

      > Requires: httpd-mmn = 20051115
      > Installed: httpd-2.4.4-1.x86_64 (installed)
      > httpd-mmn = 20120211
      > Available: httpd-2.2.15-26.el6.centos.x86_64 (base)
      > httpd-mmn = 20051115

      http://www.kakiro-web.com/linux/php-install.html ということで,PHPがらみの話のようですね。
      関連のものを削除 + yum clean all で yum のキャッシュをクリアしてやるといいかもしれません。

  4. おはようございます。

    こちらも参考に以前やったことがあるんですが、
    php5.5.7のsrpmのビルドするとapx関連のエラーがでて
    その対処法ものっていたんですが、やってみてもエラーがでる
    そこでtrippyboyさんのphpを試したしだいです。

    しかし、上記エラーがでてしまったとyum clean allもやってみたんですがむりでした。CentOS7を待ちます。

    1. くりくりさん,こんにちは。

      > こちらも参考に以前やったことがあるんですが、

      やはり。試されていたんですね。

      > Requires: httpd-mmn = 20051115

      Googleで上をやると,一番最初に引っかかるサイトなので,そうではないかと思ってはいたんですが。しかし,上記のキーワードでググって見ると新しいエラーではないようですね。APIが大きく変わったときによく出るようです。Apacheは2.2から2.4に向けてかなり大きく変わりましたからね。その辺で,古いPHPのパッケージのどこかとゴッツンコするんでしょう。

      > CentOS7を待ちます。

      パッケージ管理されているもので,違うことをしようと思うといろいろ難しいものですね。だからこそ,よくメンテされているパッケージを使うことは,大きな利益をもたらすのでしょうが。
      一応,こんなのを読んだのでお知らせしておきます。これも,もう試された後かもしれませんが……
      rpm –e httpd したときに依存しているモジュールがありエラーとなる件

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください