□dracdの再構築(VineLinux版)
dracdにパラメータを渡したいのだけど、/etc/init.d/dracdとかを編集
しても、コマンドラインから直接起動してもぜんぜん反映してくれない。
詳しく調べていないけど、たぶん rpc.dracd そのもののバグかな!?
というわけで、どうせ固定値で運用するのでソースを直接いじって初期値
を希望の値にしてしまう。
まずはdracdがいじれる環境をapt-getする。
続いてdracdパッケージのSRPMを取ってきて、オプションを修正して、
リビルドして再パッケージ化してしまうといいのでは?と思ったので
やってみる。
cd /tmp/
apt-get source dracd
rpmbuild –rebuild dracd-1.12-3vl6.src.rpm
としてきちんと正常終了する事を確認。
そしたら、改めて ソースを変更するために、src.rpmを展開
rpmbuild –recompile dracd-1.12-3vl6.src.rpm
そしたら、ソース本体を移動してdracdの初期設定を書き換えてしまう
> # ls -al /root/rpm/SOURCES/
> 合計 52
> drwxr-xr-x 2 root root 4096 1月 22 10:33 ./
> drwxr-xr-x 8 root root 4096 1月 22 10:31 ../
> -rw-r–r– 1 root root 1167 7月 7 2009 README.vine-drac
> -rw-rw-r– 1 root root 1299 11月 20 2007 drac-Makefile-1.12.patch
> -rw-rw-r– 1 root root 20705 8月 23 2003 drac.tar.Z
> -rwxr-xr-x 1 root root 962 11月 3 2000 dracd-init.d.source*
> -rwxr-xr-x 1 root root 22 3月 7 2000 dracd-rc.d.source*
> -rw-r–r– 1 root root 198 7月 2 2000 dracd.allow-sample
cp /root/rpm/SOURCES/drac.tar.Z /usr/src/package/
cd /usr/src/
mkdir dracd
cd dracd/
tar xvzf ../package/drac.tar.Z
で、rpc.dracd.c を
:
:
> // 2013.01.22 T.Kabu
> //long explimit = 30 * 60; /* expiry limit (seconds) */
> long explimit = 90 * 60; /* expiry limit (seconds) */
:
:
:
> /* Parse command-line options */
> main(argc, argv) int argc; char **argv; {
> int c;
> extern char *optarg;
> extern int optind;
>
> while ((c = getopt(argc, argv, “ie:”)) != EOF) {
> switch (c) {
> case ‘i’:
> initdb = 1;
> break;
> case ‘e’:
> explimit = atoi(optarg) * 60;
> break;
> case ‘?’:
> fprintf(stderr, “Usage: %s [-i] [-e expire] [dbfile]\n”,
> argv[0]);
> exit(2);
> }
> }
> // 2013.01.22 T.Kabu
> fprintf(stderr, “rpc.dracd initdb=%d explimit=%d\n”, initdb, explimit);
> if ( optind < argc ) dbfile = argv[optind];
> dracmain(); /* the main function from rpcgen */
> exit(1);
> }
のようにしたらソース(tarボール)を作り直し。
tar cpvzf ../package/drac.tar.Z ./
できたら、元に戻して
mv -f /usr/src/package/drac.tar.Z /root/rpm/SOURCES/drac.tar.Z
新しいrpc.dracdを再ビルドします。
rpmbuild -ba /root/rpm/SPECS/dracd-vl.spec
として、
:
:
> 書き込み完了: /root/rpm/SRPMS/dracd-1.12-3vl6.src.rpm
> 書き込み完了: /root/rpm/RPMS/i686/dracd-1.12-3vl6.i686.rpm
:
:
と言う感じで新たにrpmができたらめでたしめでたし。
後はここから目的の本体だけを吸い出してもいいし、再インストールしてもいい。
rm -rf /tmp/dracd
cd /tmp/
mkdir ./dracd
cd ./dracd
rpm2cpio /root/rpm/RPMS/i686/dracd-1.12-3vl6.i686.rpm | cpio -id
そしたら
./usr/sbin/rpc.dracd
にあるので、元のを避けてコピーすればOK。
mv /usr/sbin/rpc.dracd /usr/sbin/rpc.dracd.org
/bin/cp -af ./usr/sbin/rpc.dracd /usr/sbin/rpc.dracd
chmod 755 /usr/sbin/rpc.dracd
/etc/init.d/dracd restart
とすると、今度からは
> rpc.dracd initdb=0 explimit=5400
こんな感じに表示してくれる。(相変わらず引数は反映してくれないけどね)