1
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

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

前回のおさらい

  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ファイルを配布すれば環境をそろえることもできるので、もしよければ、実践してみてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?