CentOS7.4 に 新しい Apache をビルドしてインストール

CentOS 7.4 の 64bit版に脆弱性の対応で Apache2.4.53 をインストールしたいのですが、標準リポジトリからインストールできる Apache のバージョンは 2.4.6 です。
そのため、RPM を Apache の公式サイトからダウンロードしたソースを元に作成していきます。

パッケージ間の依存関係があるため先人の情報を参照しながら実行したため、備忘録として残しておきます。

依存関係にあるパッケージで、CentOS7.4.1708の標準リポジトリからインストールできるものについては、特別なものでない限り省略しています。

以下の各コマンドで、プロンプトが「#」で始まっているものは root ユーザーでの実行、「$」で開始しているものは一般ユーザーでの実行となります。

# libuuid-develのインストール #

Apache2.4.53 のRPMを作成するには、依存関係となるlibuuid-develが必要となります。
このlibuuid-develのインストールを、次に示すAPR1.5.2のRPMを作成する前に行っていないと、APR1.5.2のRPMの作成、インストールには成功しますが、Apache2.4.53 のRPMを作成する際に、以下のようなエラーになってしまいます。

~~~text:エラー
/usr/lib64/libaprutil-1.so: undefined reference to `apr_os_uuid_get' collect2: error: ld returned 1 exit status
~~~
以下のコマンドを実行して、APR1.5.2のRPMを作成する前に、libuuid-develのインストールを行います。
~~~text:コマンド
# yum install libuuid-devel
~~~
https://archive.kernel.org/centos-vault/7.4.1708/os/x86_64/Packages/libuuid-devel-2.23.2-43.el7.x86_64.rpm

# APR1.5.2のインストール #

Apache2.4.53のRPMを作成するには、依存関係となるapr-develのバージョン1.4.0以上が必要となります。

CentOS7.4.1708の標準リポジトリからインストールできるapr-develのバージョンは1.4.8なのですが、こちらを使用した場合、ApacheのRPMの作成時に以下のようなエラーになってしまいます。

~~~text:エラー
RPM ビルドのエラー: ファイルが見つかりません: /xxxxx/BUILDROOT/httpd-2.4.53-1.x86_64/usr/lib64/httpd/modules/mod_mpm_event.so
~~~
※パスの「xxxxx」の部分は、rpmbuildの実行環境により異なります。


CentOS7.4.1708の標準リポジトリからインストールできるAPRでは、eventのMPMのモジュールが作成できないため、APRの公式サイトからAPR1.5.2のソースをダウンロードしてRPMを作成し、インストールを行います。

※Apache2.4.53のRPMを作成する際に依存関係として必要なるapr-util-develは、CentOS7.4.1708の標準リポジトリからインストールできるものを利用可能ですが、apr-util-develのインストールには依存関係としてapr-develが必要となり、先にapr-util-develを標準リポジトリからインストールを行うと、apr-develも標準リポジトリのものがインストールされてしまうため、apr-util-develのインストールは、ここで紹介している手順によるapr-develのインストールが完了した後に行うようにします。

# APR1.5.2のソースをダウンロード #

以下のコマンドを実行して、APR1.5.2のソースのダウンロードを行います。

※ダウンロード元のURLは、APRの公式サイトから遷移できるアーカイブページにリンクがあります。

（新しいバージョンがリリースされた際にリンク切れにならないよう、ダウンロードページではなく、アーカイブページを使用するようにしています。）

~~~text:コマンド
$ wget http://archive.apache.org/dist/apr/apr-1.5.2.tar.bz2
~~~

# APR1.5.2のRPMを作成 #

以下のコマンドを実行して、APR1.5.2のRPMの作成を行います。

~~~text:コマンド
$ rpmbuild -tb --clean apr-1.5.2.tar.bz2
~~~
以下のRPMが作成されます。

* apr-1.5.2-1.x86_64.rpm
* apr-devel-1.5.2-1.x86_64.rpm
* apr-debuginfo-1.5.2-1.x86_64.rpm

# APR1.5.2のインストール #

以下のコマンドを実行して、APR1.5.2のインストールを行います。

apr-devel をインストールするには apr が必要となるため、一緒にインストールを行います。

~~~text:コマンド
# rpm -Uvh apr-1.5.2-1.x86_64.rpm apr-devel-1.5.2-1.x86_64.rpm
~~~

# apr-util-develのインストール #

APRのインストールの冒頭に記載したように、apr-util-develのインストールは、apr-develのインストール後に行います。

以下のコマンドを実行して、apr-util-develのインストールを行います。

~~~text:コマンド
# yum install apr-util-devel
~~~

# distcache-develのインストール #

Apache2.4.53のRPMを作成するには、依存関係となるdistcache-develが必要となります。

CentOS7.4.1708の標準リポジトリにはdistcache-develが存在しないため、ここではFedoraのdistcacheのSRPMをダウンロードしてRPMを作成し、インストールを行います。

# distcacheのSRPMをダウンロード #

以下のコマンドを実行して、distcacheのSRPMのダウンロードを行います。

※ダウンロード元のURLは、Fedoraのアーカイブページにリンクがあります。

~~~text:コマンド
$ wget https://archive.fedoraproject.org/pub/archive/fedora/linux/releases/18/Everything/source/SRPMS/d/distcache-1.4.5-23.src.rpm
~~~

# distcacheのRPMを作成 #

以下のコマンドを実行して、distcacheのRPMの作成を行います。

~~~text:コマンド
$ rpmbuild --rebuild --clean distcache-1.4.5-23.src.rpm
~~~

以下のRPMが作成されます。

* distcache-1.4.5-23.x86_64.rpm
* distcache-devel-1.4.5-23.x86_64.rpm
* distcache-debuginfo-1.4.5-23.x86_64.rpm

# distcache-develのインストール #

以下のコマンドを実行して、distcache-develのインストールを行います。

distcache-develをインストールするにはdistcacheが必要となるため、一緒にインストールを行います。

~~~text:コマンド
# rpm -Uvh distcache-1.4.5-23.x86_64.rpm distcache-devel-1.4.5-23.x86_64.rpm
~~~

# mailcapのインストール #

Apache2.4.53のインストールを行うには、依存関係となる/etc/mime.typesが必要となります。

/etc/mime.typesが含まれているパッケージは、以下のコマンドで確認できます。

~~~text:コマンド
# yum provides /etc/mime.types ：（略） mailcap-2.1.41-2.el7.noarch : Helper application and MIME type associations for file types リポジトリー : base 一致 : ファイル名 : /etc/mime.types
~~~
この結果により/etc/mime.typesは、mailcapに含まれていることが分かります。

以下のコマンドを実行して、mailcapのインストールを行います。

~~~text:コマンド
# yum install mailcap
~~~

# Apache2.4.53のインストール #

Apacheの公式サイトからApache2.4.53のソースをダウンロードしてRPMを作成し、インストールを行います。

Apache2.4.53のソースをダウンロード

以下のコマンドを実行して、Apache2.4.53のソースのダウンロードを行います。

※ダウンロード元のURLは、Apacheの公式サイトから遷移できるアーカイブページにリンクがあります。

（新しいバージョンがリリースされた際にリンク切れにならないよう、ダウンロードページではなく、アーカイブページを使用するようにしています。）

~~~text:コマンド
$ wget http://archive.apache.org/dist/httpd/httpd-2.4.53.tar.bz2
~~~

# Apache2.4.53のRPMを作成 #

以下のコマンドを実行して、Apache2.4.53のRPMの作成を行います。

~~~text:コマンド
$ rpmbuild -tb --clean httpd-2.4.53.tar.bz2
~~~
以下のRPMが作成されます。

* httpd-2.4.53-1.x86_64.rpm
* httpd-devel-2.4.53-1.x86_64.rpm
* httpd-manual-2.4.53-1.x86_64.rpm
* httpd-tools-2.4.53-1.x86_64.rpm
* mod_authnz_ldap-2.4.53-1.x86_64.rpm
* mod_lua-2.4.53-1.x86_64.rpm
* mod_proxy_html-2.4.53-1.x86_64.rpm
* mod_socache_dc-2.4.53-1.x86_64.rpm
* mod_ssl-2.4.53-1.x86_64.rpm
* httpd-debuginfo-2.4.53-1.x86_64.rpm

# Apache2.4.53のインストール #

以下のコマンドを実行して、Apache2.4.53のインストールを行います。

~~~text:コマンド
# rpm -Uvh httpd-2.4.53-1.x86_64.rpm
~~~

別途PHPのRPMを作成する場合等、httpd-develが必要となるときは、以下のコマンドを実行して、httpd-develのインストールを行います。

~~~text:コマンド
# rpm -Uvh httpd-devel-2.4.53-1.x86_64.rpm
~~~

多分これで大丈夫です。