Solaris10でZABBIXをソースからインストール(まだ途中)
ちょっと前にZABBIXサーバをたてて運用中なんですが、PCにFedoraを載せたやつで運用中。サーバ機器にのせかえるために作業中です。Solarisにもパッケージ欲しいな。
システム要件
インストールの手順はZABBIXのウェブ、ドキュメントのところにあります。ZABBIXを入れる前にいろいろとやらないといけないことが。少なくとも以下のものを先に入れる必要があります。
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でまだ一悶着あるのですが、それは、また後日。