[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:05812] ndtpd2.0 のスクリプトと bash2.02



  永井@シリウスです。やや長文ですが、ご容赦下さい。

  ndtpd2.0をコンパイルようとしているのですが、どうも
bash2.02と相性が悪いようで、コンパイルできません。bash
を2.01以前に戻してあげるとコンパイルできます。

  実際にうまくいっていないのは、ndtpd2.0が作成するlibtoolなの
ですが、この中に以下のような記述が各所にでてきています。

$run eval '(cd $objdir && $LN_S $realname $linkname)' || exit $?

この、「cd $objdir」が実行できない、といってスクリプトが
とまってしまいます。いろいろ調べたところ、「cd ./$objdir」
としてやると実行できるようです。ディレクトリは存在していて
移動もできるはずなのに、このスクリプト中ではcdできません。
ためしにその前後に

 cd .libs

などと、実際に移動しようとしているディレクトリに普通に
cdしようとしてもできません。なのに、

cd ./.libs

としてやると移動できます。今のところ、このスクリプト中でのみ
しか再現できません。

またこの現象は、bashをshとして使用したときにのみにしか
発生しません。Makefile中のlibtoolを呼び出している個所を、
/bin/sh libtoolから/bin/bash libtoolなどと変えてあげると
動きます。

  debianのディストリビューションは、boを使用しています。
ndtpdは2.0beta0/beta1ともに同じ現象が発生します。
bashはconfigureに何もオプションを指定しないでコンパイル
してインストールしました。ファイルは現在、

/bin/bash -> bash.2.02
/bin/bash.2.00           ←元から入っていたbash
/bin/bash.2.02
/bin/sh ->bash

などとして使用しています。ここで、/bin/bash -> bash.2.00に
戻すとちゃんと動いた、ということです。(ちょっとdebianの
使い方としては反則なことしてますが、そこはお許しを(^^;)

  bashは2.0のあるバージョンでは括弧の展開に問題があるものが
あると聞いていたので、その関係なのかな、とも思いましたが、
evalの行の記述とは無関係で、単にcdができていないだけの
ようなので、そういう問題ではないとおもっています。bashは
shとして起動するとPOSIX準拠で動くんだと思いましたので、
その関係なのかなとは思うのですが、そうなる理由がさっぱり
わかりません。ただ、出来上がったbash2.02のファイルサイズが
1.5Mもあるのがちょっとばかり気になっているところではあるの
ですが、同じようにして出来上がっている2.01では問題はあり
ませんでした。

  一応整理すると、

1)bashのバージョンが2.02で、
2)bashをshとして使用して、
3)ある特定の状況(←これがなにか、さっぱりわかりません。
    libtoolスクリプトが結構大きいのでひるんでいます(^^;)

であるときに、cdコマンドが失敗することがある、ということの
ようです。

  どなたか、このようなbashの動きに遭遇された方、このような
現象の原因をご存じのかた、あるいは実際に、bash2.02+ndtpd2.0
の組合わせでコンパイルされたかた、いらっしゃいますでしょうか?

////////////////////////////////////////////////
Toyohiko Nagai <nagai@xxxxxxxxxxxx>

PGP Key fingerprint
F2 40 A5 42 F6 49 65 FF  09 B0 B3 77 5F 2A F6 F7
////////////////////////////////////////////////