Linux Install Memo

サーバー管理者によるLinux関連ソフトのインストールメモ

Home » □dracdの再構築(VineLinux版)

□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

こんな感じに表示してくれる。(相変わらず引数は反映してくれないけどね)

 

Name of author

Name: admin

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です