2020年12月10日木曜日

Ubuntu 18.04 の 386-ds-base に付いてくる /usr/sbin/db2bak のバグ

ちょっと用事があって、386 directory server を調査してるんだけど…。
基本的なところで、バックアップ・リストアをしようと思って db2bak スクリプトを実行しようとしても、どうもうまく動かない。
「なんでだ?」と中身を見てみたら、簡単なシェルスクリプトだった。
バックアップを保存するディレクトリを指定するオプションが分からず、中身を見てみたら、どうやら -a っぽい。
でも、この -a オプションを処理する部分、明らかに間違ってる。
getopt で a を処理するところが、

a) $bakdir=$OPTARG;;
になってて…。おいおいイコールの左辺が $付きの変数じゃねぇかよ。
んじゃぁ bakdir って他にどこで使われているんだ?と思って探しても出てこない。
なんじゃそりゃ…。
で、更に読み進めてみると…
eval /usr/sbin/ns-slapd db2archive -D $CONFIG_DIR -a $bak_dir $args
という処理が。
おいおい…。bak_dir って変数名で処理してるじゃねーかよ…。
ってことはさっきの場所、
a) $bakdir=$OPTARG;;
じゃなくて
a) bak_dir=$OPTARG;;
が正解なんじゃねぇのか?

バグレポート送ってもいいけど、もう 20.10 も出てるぐらいだし、20.04 では直ってると信じよう。