%post にバックティックまたはコマンド置換が含まれている場合、ログ ファイルは空白になります。

%post にバックティックまたはコマンド置換が含まれている場合、ログ ファイルは空白になります。

Centos6.6用のカスタムUSBインストーラーを構築する際(簡単ではない)に、もしキックスタートファイルの%postセクションにバッククォートがある

  • Anacondaは完了しますが、すぐに終了して画面が空白になります(ビデオ出力なし)。通常はAnacondaが終了したなどのメッセージが表示されて終了します。
  • anaconda-ks.log と %post ログ ファイルは両方とも存在しますが、長さがゼロです。

これはうまくいく

%pre --log=/root/postLog.log
echo "This is the post"
ls
%end

これは機能しません

%pre --log=/root/postLog.log
echo "This is the post"
echo `ls`
%end

これも機能しない

%pre --log=/root/postLog.log
echo "This is the post"
echo $(ls)
%end

なぜでしょうか? %post で実行する必要があることがたくさんありますが、コマンド置換/バックティックがサポートされていないと、それがさらに困難になります。

回避策はありますか?

編集: では、なぜバックティックが必要なのでしょうか?

インストーラーはアプライアンス製品用なので、ベース OS、カスタム OS rpm、および製品 rpm をインストールする必要があります。

したがって、%post セクションでは、次のようなパターンが非常に一般的です。

cd $ApplicationPackageDir
RPMLIST=`ls *.rpm`
RPMCOUNT=`ls *.rpm | /usr/bin/wc -l`

for theRpm in $RPMLIST
do
    echo /bin/rpm --quiet --upgrade --nodeps --force $theRpm
done

一般的な何かを行うための同様のパターン何でもファイルは特定のディレクトリに存在します。

Anaconda がファイル内にバックティックがあるとエラーを起こす場合、全体のコンセプトは機能しません。

さらに、バックティックは有効な bash 演算子ですが、キックスタートでは問題があるようです。

bashのバックティックは想定キックスタートで働くには?

編集 II:例に$(ls)を追加しました

関連情報