Solaris10でZABBIXをソースからインストール(まだ途中)

ちょっと前にZABBIXサーバをたてて運用中なんですが、PCにFedoraを載せたやつで運用中。サーバ機器にのせかえるために作業中です。Solarisにもパッケージ欲しいな。

システム要件

インストールの手順はZABBIXのウェブ、ドキュメントのところにあります。ZABBIXを入れる前にいろいろとやらないといけないことが。少なくとも以下のものを先に入れる必要があります。

  • Apache 1.3.12以上。最新の2.2.14をインストール
  • MySQL(別のDBでもいいけど)
  • php(4.3以上)。今回は最新の5.2.11をインストール
  • libcurl(httpの監視用)

Apacheをインストール

パッケージでもいいんだけど、これはなれてるからソースから。

$ ./configure --enable-so
$ make 
# make install

MySQLをインストール

これは、www.sunfreeware.comからパッケージをダウンロードしてpkgadd。なるべく楽をしたい。でもこれはあとで痛い目に合う原因に。

# unzip -d mysql-5.0.67-sol10-sparc-local.gz
# pkgadd -d mysql-5.0.67-sol10-sparc-local

phpをインストール

いろいろとモジュールを有効にしないといけないみたいので、パッケージは断念。ソースをダウンロードしてconfigure,make。configureでphp-gd,php-bcmath,php-mysqlを有効にしています。

$ ./configure  --with-mysql=/usr/local/mysql --with-gd --enable-bcmath --with-ap
xs2=/usr/local/apache2/bin/apxs
$ make
# make install

MySQLにテーブルなど追加

MySQLでmy.cnfとかを用意して、mysql_install_dbを実行したあと、ZABBIX tarball中に含まれているSQL文を実行。マニュアルの43ページに記述があります。

# mysql -u root -p
***
mysql> create databse zabbix ;
mysql> quit ;

# cd create/schema
# cat mysql.sql | mysql -v -u root -p zabbix
# cd ../data
# cat data.sql | mysql -v -u root -p zabbix
# cat images_mysql.sql | mysql -u root -p zabbix

冗長化の-vオプションは別にいらないんですが、経過を眺めたいときはつけた方がなんとなく仕事をしている感じ。

ZABBIXをコンパイル、リンク

ZABBIX tarballを展開したディレクトリでconfigure実施。マニュアルだと44ページ。jabberは使わないから省略。

$ ./configure --enable-server --with-mysql --with-net-snmp -–with-libcurl
(中略)
checking for mysql_config... /usr/sfw/bin//mysql_config
checking for main in -lmysqlclient ... no
configure: error: Not found mysqlclient library
$ 

config.logの該当個所を除くとこんなエラー。

configure:8927: checking for main in -lmysqlclient
configure:8956: gcc -o conftest -g -O2 -I/usr/sfw/include/mysql -xstrconst -mt
  -L/usr/sfw/lib -L/usr/sfw/lib/mysql conftest.c -lmysqlclient   -lkvm -lm -lres
olv -lnsl -lkstat -lsocket   >&5
gcc: language strconst not recognized
ld: fatal: file conftest.c: unknown file type
ld: fatal: File processing errors. No output written to conftest
collect2: ld returned 1 exit status

gccが "-xstrconst -mt"ってのが理解できないよっていっている模様。なんだこりゃ。google先生に聞くと、MySQLをビルドするときつかうコンパイルオプションで、これでエラーになるよってのが多数見つかりました。多分、パッケージをつくった環境ではこれ有効なんだけど、この環境では無効なんだと思う。これだからパッケージはいやなんだ。

config.logでstrconstってのを探すともうすこし見つかりました。

CFLAGS='-g -O2 -I/usr/sfw/include/mysql -xstrconst -mt'
(中略)
MYSQL_CFLAGS='-I/usr/sfw/include/mysql -xstrconst -mt'

うーむ、MYSQL_CFLAGSからそのまま持ってきているのか。で、それはどこで定義されているんだと調べることしばし。
/usr/sfw/bin/mysql_configに発見。93行目。故にコメントアウト

#cflags="-I$pkgincludedir -xstrconst -mt " #note: end space!
cflags="-I$pkgincludedir " #note: end space!

"-mt"ってのもエラーになるので一緒に消しときました。

やれやれ、一応ここまではとおりました。実はこのあとlibcurlでまだ一悶着あるのですが、それは、また後日。