私たちは通常、システムのインストール後に新しいFreeBSDマシンをセットアップするためにカスタムスクリプトを使用します。これは、ポートツリーからツールをインストールし、システム環境を設定します。 また、新たにインストールされたFreeBSD-8.2マシンをfreebsd-updateによってFreeBSD-8.2p3に自動更新する必要があります。私が知っているように、freebsd-updateは "cron"オプションなしでシェルスクリプトから実行することはできません。だから私は、FreeBSD-更新カンニングするカスタムプログラムをプリロードしてみてください:この微調整でシェルスクリプトからfreebsd-updateをしようとしているときにttyにふりをする方法は?
${CAT} > /tmp/isatty.c <<EOF
int isatty(const int fd) { return 1; }
EOF
${CC} -shared -fPIC -o /tmp/isatty.so /tmp/isatty.c
${ENV} LD_PRELOAD=/tmp/isatty.so LESS="-E" ${FREEBSD_UPDATE} fetch install < /dev/null
を、私はsucessfully私のカスタムスクリプトからはFreeBSD-updateを実行することができますが、アップデートサーバからFreeBSDのインストーラ後にフェッチされたファイルは、Iこのエラーメッセージが表示されます:
Fetching metadata signature for 8.3-RELEASE from update5.FreeBSD.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... gunzip: standard input is a terminal -- ignoring
metadata is corrupt.
私はこれを解決するチャンスがありますか?
FreeBSDでこれが可能かどうか、または実際に役立つかどうかは不明ですが、Linuxでは '/ dev/tty'からスクリプトの入力をリダイレクトできます –