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 を参照すると
--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 する時は確認しておいたほうがいいかもですね