前回のおさらい
- RPMビルド環境の構築
- アップデート先のSRPMファイルの取得と展開
- SPECファイルの編集
- rpmbuildでSRPMからRPMファイルを作成する ← 前回はここでエラー
- 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の編集例(ファイルの先頭部分のみ抜粋)
%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のアップデートをテーマにしましたが、他のパッケージでも同様にアップデートできると思います。
会社などで開発者が同じOSの開発環境を使っている場合には、一人の開発者がRPMファイルを作成し、アップデート先のRPMファイルを配布すれば環境をそろえることもできるので、もしよければ、実践してみてください。