Zabbix3.xをFedora25に、あえてRPM Buildでぶち込みたかった話。

2017年5月9日
久しぶりにZabbixServerを新規構築し直そうと、Fedora21の頃に使用した方法を使ってやってみたのですが・・・。
結構重要なRPMが作成されないんですよ・・・

zabbix-server-mysql-3.2.6-1.fc25.x86_64.rpm
zabbix-server-pgsql-3.2.6-1.fc25.x86_64.rpm
このあたりとかモロに・・・。

FC25でPHP7に更新された事が問題ではないのか?というリプも頂いたのですが・・・

「そもそもFedora24でも成功していない」んですよねぇ・・・。
ソースファイルリビルドは・・・まだすんなりといっちゃう場合のみしか自分経験してないんですよねぇ。(そもそも仕様を把握しきれてない)

そんな時でした。
PHP 7.0は、3.0.2以降とか3.2.0以降であれば対応していたと思います。PHP 7.1対応は修正中のようです。ということで、Fedora 25でもパッケージを作成して稼動できることを確認しました。

パッケージ作成成功していらっしゃる・・!
と言う事は、オプションとかConfigとか指定すればいけそう?
色々調べていたらspecファイルを弄るとか弄らないとか。

・・・ぜんっぜん触った事ねぇ。

注意点としては、zabbix.spec内でOSのバージョンを判定して分岐している箇所でfedora用の条件を付加することと、
zabbix-web24.conf内のmod_phpの設定で7用の分岐も追加することが必要です。
あと1つ忘れてました。Fedora 25だとphp-mysqlというパッケージは無いので、
php-mysqlndに切り替えることも必要でした。

あうち、やはりspecファイルを弄らないと駄目みたい。
ホント助かります・・・。理解追いついてないんですが?

というわけで、rpmdev-extractコマンドで展開してみた。

config.patch zabbix-proxy.init
fonts-config.patch zabbix-proxy.service
fping3-sourceip-option.patch zabbix-server.init
zabbix-3.2.6.tar.gz zabbix-server.service
zabbix-agent.init zabbix-tmpfiles.conf
zabbix-agent.service zabbix-web22.conf
zabbix-java-gateway.init zabbix-web24.conf
zabbix-java-gateway.service zabbix.spec
zabbix-logrotate.in zabbix_java_gateway-sysd

お目当てのファイルはzabbix.specですね。
中身を見てみます。

Name: zabbix
Version: 3.2.6
Release: 1%{?alphatag:.%{alphatag}}%{?dist}
Summary: The Enterprise-class open source monitoring solution
Group: Applications/Internet
License: GPLv2+
URL: http://www.zabbix.com/
Source0: zabbix-%{version}%{?alphatag:%{alphatag}}.tar.gz
Source1: zabbix-web22.conf
Source2: zabbix-web24.conf
Source3: zabbix-logrotate.in
Source4: zabbix-java-gateway.init
Source5: zabbix-agent.init
Source6: zabbix-server.init
Source7: zabbix-proxy.init
Source10: zabbix-agent.service
Source11: zabbix-server.service
Source12: zabbix-proxy.service
Source13: zabbix-java-gateway.service
Source14: zabbix_java_gateway-sysd
Source15: zabbix-tmpfiles.conf
Patch0: config.patch
Patch1: fonts-config.patch
Patch2: fping3-sourceip-option.patch

Buildroot: %{_tmppath}/zabbix-%{version}-%{release}-root-%(%{__id_u} -n)

%if 0%{?rhel} >=6
%define build_server 1
%endif

BuildRequires: mysql-devel
BuildRequires: postgresql-devel
BuildRequires: net-snmp-devel
BuildRequires: openldap-devel
BuildRequires: gnutls-devel
BuildRequires: sqlite-devel
BuildRequires: unixODBC-devel
BuildRequires: curl-devel >= 7.13.1
BuildRequires: OpenIPMI-devel >= 2
BuildRequires: libssh2-devel >= 1.0.0
BuildRequires: java-devel >= 1.6.0
BuildRequires: libxml2-devel
%if 0%{?rhel} >= 6
BuildRequires: openssl-devel >= 1.0.1
%endif
%if 0%{?rhel} >= 7
BuildRequires: systemd
%endif
%if 0%{?build_server}
BuildRequires: iksemel-devel
%endif

%description
Zabbix is the ultimate enterprise-level software designed for
real-time monitoring of millions of metrics collected from tens of
thousands of servers, virtual machines and network devices.

%package agent
Summary: Zabbix Agent
Group: Applications/Internet
Requires: logrotate
Requires(pre): /usr/sbin/useradd
%if 0%{?rhel} >= 7
Requires(post): systemd
Requires(preun): systemd
Requires(preun): systemd

・・・・・なにこれどういうルールで作成されてんですかこれぇぇぇぇぇぇぇ!?
というわけでドキュメント的なものを漁りながらチェックしてみる。

BuildRequires, パッケージの作成時に必要となるパッケージ名
Requires

なるほど、(一部抜粋したので)↑の中には表示してないが、
Requires: php-mysql
これをマズ変更すべきなんだなぁ。(多分途中でパッケージ入ってねぇぞksって怒られる奴)

あとは・・・
OSのバージョンを判定して分岐している箇所でfedora用の条件を付加すること
この部分ですね。

雰囲気的には、%if 0%{?rhel} >=6
この部分が関係してきそうだけど・・・Fedora用の分岐を追加って言うのはどう書いたら正解なんだろうか。
一先ず、自分の理解が足りてないのは明白なので、教えて下さった方にはお礼と、ちょっとspecファイルの仕様把握に時間掛かりそうとお伝えしておきました。

{?****} この部分を「FC」にすればいいのかな?「Fedora」とかでいいのかな?とか。
まぁ色々調べ始めた頃にデスネ。

手元に今回作成したFedora 25用のSRPMがあるので、何らかの共有の方法があればご提供できます。
とのご連絡・・・。

・・・・頂いてしまいました。

まぁでも中身を改めて見せて頂くと、考えてる事がだいたい合ってたので「なんだそのままやっちゃっても良かったんじゃん」みたいな感じに。
if 0%{?rhel} >=6 || 0%{?fedora} > 24
%define build_server 1
%endif

何がともあれ助かりました。。。

lpicとか取るとこのあたりの耐性も付くだろうか・・・?