1

./configureffmpegのスクリプトで問題が発生しています。私のLinux環境はbusyboxを使用していますが、これは限られたLinuxコマンドのセットしか許可していません。ffmpeg./configureスクリプトで使用されるコマンドの1つはmktemp -u、ここでの問題は、Linuxのbusyboxが-uスイッチを有効として認識しないため、それについて文句を言い、構成プロセスを中断することです。

これは、コマンド./configureを使用する関連コードです。mktemp -u

if ! check_cmd type mktemp; then
    # simple replacement for missing mktemp
    # NOT SAFE FOR GENERAL USE
    mktemp(){
        echo "${2%XXX*}.${HOSTNAME}.${UID}.$$"
    }
fi

tmpfile(){
    tmp=$(mktemp -u "${TMPDIR}/ffconf.XXXXXXXX")$2 &&
        (set -C; exec > $tmp) 2>/dev/null ||
        die "Unable to create temporary file in $TMPDIR."
    append TMPFILES $tmp
    eval $1=$tmp
}

私はbashスクリプトがまったく得意ではないので、この構成スクリプトを強制的に使用せず、上記のスニペットのように使用できる「置換」mktemp -u代替オプションを使用する方法について誰かが考えているかどうか疑問に思いました。ありがとう。

ところで...単にスイッチを取り外すだけで-uは機能しません。-tまた、、、またはに置き換えることもありません-p。私はそれmktempを完全に回避しなければならないと信じています。

4

2 に答える 2

2

これを変える:

if ! check_cmd type mktemp; then
    # simple replacement for missing mktemp
    # NOT SAFE FOR GENERAL USE
    mktemp(){
        echo "${2%XXX*}.${HOSTNAME}.${UID}.$$"
    }
fi

これに:

#if ! check_cmd type mktemp; then
if true; then # Force the use of mktemp()
    # simple replacement for missing mktemp
    # NOT SAFE FOR GENERAL USE
    mktemp(){
        echo "${2%XXX*}.${HOSTNAME}.${UID}.$$"
    }
fi

または、構成全体を削除して、if fi残っているものが単なるmktemp()定義になるようにすることもできますが、実行する必要があることを覚えておくために、また戻る必要がある場合に備えて、構成を残しておくことをお勧めします。

于 2011-01-03T03:29:30.100 に答える
1

configureスクリプトを変更して、-uオプションをmktempにドロップし、削除しますset -C;(これにより、クローバーなしモードが設定され、ファイルが存在しない必要があります。削除する-uと、削除する必要がありset -Cます)。

mktemp(1)のMacOSXのマニュアルページには次のように書かれています。

-u 「安全でない」モードで操作します。一時ファイルは、mktempが終了する前にリンクが解除されます。これはmktemp(3)よりもわずかに優れていますが、それでも競合状態が発生します。このオプションの使用は推奨されていません。

生成されたファイル名はmktempによってリンク解除され、すぐにconfigureスクリプトによって再作成されます。これは些細なことです。ドロップする-uということは、ファイル名がすでに存在し、安全に作成されていることを意味します。

ソフトウェアが頻繁に使用するものである場合は、ソフトウェアの開発者または保守者に問題を報告してください。

于 2011-01-03T03:44:56.330 に答える