Apache
centos7

CentOS7.3のApache 2.4をRPMでアップデートする方法(2)

More than 1 year has passed since last update.

前回のおさらい

  1. RPMビルド環境の構築
  2. アップデート先のSRPMファイルの取得と展開
  3. SPECファイルの編集
  4. rpmbuildでSRPMからRPMファイルを作成する ← 前回はここでエラー
  5. RPMファイルでアップデートする

前回はApache2.4のアップデート先のspecファイルの修正まではできたものの、依存性のエラーでRPMファイル作成、インストールまで行き着きませんでした。
前回:CentOS7.3のApache 2.4をRPMでアップデートする方法(1)

今回の内容

前回の続きから始めて、最終的にApacheをアップデートするところまでです。

  • 残りの依存性の解消(apr-develのアップデート)
  • 5.RPMファイルでアップデートする

apr-develのアップデート(依存性の解消)

CentOS標準リポジトリからインストールできるバージョンが1.5より低いため、httpdのバージョンと合わせることができません。(apr-devel >= 1.5.0)
そこで、apache本体と同様にFC25から持ってきてインストールします。

APRとは、OSとソフトウェアとの違いを吸収するソフトウェアです。
Apache本体と同様にFedoraProjectからSRPMファイル(apr-1.5.2-4.fc25.src.rpm)をダウンロードして展開します。

SRPMファイルの取得と展開(APR編)

 $ wget https://dl.fedoraproject.org/pub/fedora/linux/releases/25/Everything/source/tree/Packages/a/apr-1.5.2-4.fc25.src.rpm
 $ rpm -ivh apr-1.5.2-4.fc25.src.rpm

SPECファイルの編集(APR編)

fc25用ではなくcentos用にするためにSPECファイルでリリース欄を修正します。
~/rpmbuild/SPECS/apr.specの編集例(ファイルの先頭部分のみ抜粋)

apr.spec
%define aprver 1

# Arches on which the multilib apr.h hack is needed:
%define multilib_arches %{ix86} ia64 ppc ppc64 s390 s390x x86_64

Summary: Apache Portable Runtime library
Name: apr
Version: 1.5.2
-Release: 4%{?dist}
+Release: 4.1.sample%{?dist}

rpmbuildでSRPMからRPMファイルを作成する(APR編)

$ rpmbuild --bb --clean ~/rpmbuild/SPECS/apr.spec 
エラー: ビルド依存性の失敗:
        libuuid-devel は apr-1.5.2-4.el7.centos.x86_64 に必要とされています
        lksctp-tools-devel は apr-1.5.2-4.el7.centos.x86_64 に必要とされています

ビルドの依存性の失敗になったので、apache本体と同様に必要なものをyum installします。

$ sudo yum install libuuid-devel lksctp-tools-devel
(中略)
インストール:
  libuuid-devel.x86_64 0:2.23.2-33.el7_3.2                      lksctp-tools-devel.x86_64 0:1.0.17-2.el7                     

完了しました!

依存性を解消しているので、再度、apr.specをビルドすると成功するはずです。

$ rpmbuild --bb --clean ~/rpmbuild/SPECS/apr.spec 

RPMファイルでアップデートする(APR編)

$ sudo yum install ~/rpmbuild/RPMS/apr-devel-1.5.2-4.1.sample.el7.centos.x86_64.rpm 
(中略)
インストール:
  apr-devel.x86_64 0:1.5.2-4.1.sample.el7.centos                                                                              

完了しました!

これでApache本体のrpmbuild時のビルド依存性を全て解消することができました。
依存性を解消しているので、再度、httpd.specをビルドすると成功するはずです。

$ rpmbuild --bb --clean ~/rpmbuild/SPECS/httpd.spec 

これで、やっと、4. rpmbuildでSRPMからRPMファイルを作成するが完了しました。

5.RPMファイルでアップデートする(Apache本体)

いよいよ、Apache本体をアップデートします。

$ sudo yum install ~/rpmbuild/RPMS/httpd-2.4.23-4.1.sample.el7.centos.x86_64.rpm 
(中略)
インストール:
  httpd.x86_64 0:2.4.23-4.1.sample.el7.centos                                   
  httpd-debuginfo.x86_64 0:2.4.23-4.1.sample.el7.centos                         
  httpd-devel.x86_64 0:2.4.23-4.1.sample.el7.centos                             
  httpd-filesystem.noarch 0:2.4.23-4.1.sample.el7.centos                        
  httpd-manual.noarch 0:2.4.23-4.1.sample.el7.centos                            
  httpd-tools.x86_64 0:2.4.23-4.1.sample.el7.centos                             
  mod_ldap.x86_64 0:2.4.23-4.1.sample.el7.centos                                
  mod_proxy_html.x86_64 1:2.4.23-4.1.sample.el7.centos                          
  mod_session.x86_64 0:2.4.23-4.1.sample.el7.centos                             

依存性関連をインストールしました:
  apr-util-ldap.x86_64 0:1.5.2-6.el7        mailcap.noarch 0:2.1.41-2.el7       

完了しました!

依存性関連で追加のインストールがありましたが、無事にApache本体をアップデートすることができました。

確認のためバージョンを見てみると無事にバージョンアップされたことが分かると思います。

$ httpd -v
Server version: Apache/2.4.23 (centos)

動作確認

$ sudo httpd -k start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message

エラーメッセージが出ていますが、httpd自体は立ち上がります。

$ ps aux | grep httpd
root      5545  0.0  0.0 289820  5108 ?        Ss   11:24   0:00 httpd -k start
apache    5549  0.0  0.0 505104  6608 ?        Sl   11:24   0:00 httpd -k start
apache    5550  0.0  0.0 308432  4328 ?        Sl   11:24   0:00 httpd -k start
apache    5551  0.0  0.0 308432  4328 ?        Sl   11:24   0:00 httpd -k start
apache    5552  0.0  0.0 308432  4328 ?        Sl   11:24   0:00 httpd -k start
apache    5553  0.0  0.0 308432  4328 ?        Sl   11:24   0:00 httpd -k start

エラーメッセージはServerNameディレクティブがないという内容です。
出さないようにしたい場合には、/etc/httpd/conf/httpd.confのどこかに下記のようにサーバー名(例ではlocalhost)を記述すれば、エラーメッセージを出さずに起動できます。

ServerName localhost

Apacheを起動しているマシンのIPアドレスを指定してブラウザでアクセスして、テストページが表示されていたら無事に起動しています。

Apache_TestPage.png

おわりに

今回はApacheのアップデートをテーマにしましたが、他のパッケージでも同様にアップデートできると思います。
会社などで開発者が同じOSの開発環境を使っている場合には、一人の開発者がRPMファイルを作成し、アップデート先のRPMファイルを配布すれば環境をそろえることもできるので、もしよければ、実践してみてください。