LoginSignup
12
14

More than 5 years have passed since last update.

Zabbix の DB schema の sql ファイルが見つからない場合は (CentOS/RHEL)

Posted at

rpm/yum でパッケージを入れる際に気を付けること

Zabbix の shema file 達

Zabbix の DB をセットアップする際に必要な schema ファイルですが

  • data.sql
  • images.sql
  • schema.sql

これらのファイルは Zabbix をセットアップした人ならば見覚えがあるはずです

通常であれば公式 repo で公開されている rpm (zabbix-server-mysql等) を install することで手に入ります

schema ファイルの場所

zabbix-server-mysql の場合ですが

[server@user] $ rpm -qpl zabbix-server-mysql-2.2.5-1.el6.x86_64.rpm
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-2.2.5
/usr/share/doc/zabbix-server-mysql-2.2.5/create
/usr/share/doc/zabbix-server-mysql-2.2.5/create/data.sql
/usr/share/doc/zabbix-server-mysql-2.2.5/create/images.sql
/usr/share/doc/zabbix-server-mysql-2.2.5/create/schema.sql
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches/1.6
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches/1.6/mysql
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches/1.6/mysql/patch.sql
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches/1.8
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches/1.8/mysql
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches/1.8/mysql/patch.sql
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches/1.8/mysql/upgrade
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches/2.0
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches/2.0/mysql
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches/2.0/mysql/patch.sql
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches/2.0/mysql/rc4_rc5.sql
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches/2.0/mysql/upgrade

こんな感じで配置されます

パッケージはエラー無く入るが・・・

[server@user] $ sudo rpm --install zabbix-server-mysql-2.2.5-1.el6.x86_64.rpm
[server@user] $

(゚∀゚)

 

[server@user] $ cat /usr/share/doc/zabbix-server-mysql-2.2.5/create/data.sql
cat: /usr/share/doc/zabbix-server-mysql-2.2.5/create/data.sql: No such file or directory

( ゚д゚)・・・?

[server@user] $ tree /usr/share/doc/zabbix-server-mysql-2.2.5/
/usr/share/doc/zabbix-server-mysql-2.2.5/
`-- upgrades
    `-- dbpatches
        |-- 1.6
        |-- 1.8
        `-- 2.0

5 directories, 0 files

[server@user] $ find /usr/share/doc/zabbix-server-mysql-2.2.5/
/usr/share/doc/zabbix-server-mysql-2.2.5/
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches/1.8
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches/2.0
/usr/share/doc/zabbix-server-mysql-2.2.5/upgrades/dbpatches/1.6

(つд⊂)ゴシゴシ
( ゚д゚)・・・

どこにも *.sql が無い \(^o^)/オワタ

なぜ package に含まれているファイルが配置されないのか

rpm の設定で document を install しないオプションがある

man を参照すると

man
--excludedocs
(man ページ、tenxinfo 文書を含めた)文書であるとマーク付されたファイルを インストールしない。

上記の rpm -qpl の結果を見ても分かる通り、Zabbix の shema ファイルは document として packaging されています
なので --excludedocs が有効な場合は配置されないということですね

でも rpm で install する時に --excludedocs を指定してないわけだが

rpm のオプションの指定の仕方は引数で与えるだけではなく、設定ファイルからも設定できます
その設定ファイルの場所はというと

  • /etc/rpm/
  • /usr/lib/rpm/

などあります
このどこかに %_excludedocs 1 とか書かれてたら --excludedocs されていることになります
(大抵の場合は /etc/rpm 以下でしょう)

いま現在設定されている設定を確認する

結局どの設定が有効になってるの?は

[server@user] $ rpm --showrc

で確認できます
結果を grep excludedocs して何も出てこなければ設定はされてません
設定されてれば出てきます
まずはrpm --showrc で確認してみるといいでしょう

終わりに

schema ファイルが配置されないせいで、chef の recipe が通らなくて困っていたんですが
--excludedocs が知らぬ間に効いていたということに気がつくまで相当時間がかかった罠

OS の image を作成する際にすこしでも容量を減らしたい為に excludedocs してる場合もあると思うのですが、
そういう image から起動させたサーバーに Zabbix Server を install する時は確認しておいたほうがいいかもですね

12
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
14