init.dを使用した再起動時の更新

init.dを使用した再起動時の更新

複数のパッケージを追加し、新規インストール時にシステムを更新するスクリプトを作成しました。これは私に問題を引き起こすinit.dスクリプトの関連部分です。

#!/bin/sh
### BEGIN INIT INFO
# Provides:          update
# Required-Start:    $local_fs $syslog $network
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Description:       Update my system
### END INIT INFO

. /lib/lsb/init-functions

case "$1" in
  start)
    log_daemon_msg "Starting update"

    apt-get --assume-yes update &&
    apt-get --assume-yes dist-upgrade

    log_end_msg $?
    ;;
  *)
    echo "Usage: $0 start" >&2
    exit 2
    ;;
esac

exit 0

スクリプトを実行可能にして使用しましたsudo update-rc.d update defaults。再起動後に確認したところ、sudo service update statusすべてのパッケージストアが解決されていないことがわかりました。

W: Failed to fetch http://.../Release.gpg  Temporary failure resolving '...'
W: Some index files failed to download. They have been ignored, or old ones used instead.

スクリプトはinit.dここで終了しますcode=exited。しかし、sleep 10コマンドを実行する前にスクリプトにaを追加することでapt問題は解決しました。$network私の# Required-Startリストに追加すると、この問題は自然に解決されると思いました。この問題を処理するより良い方法はありますか?

これが変化をもたらしたら、それを実行し続けますが、Raspian Jessie 2016-03-18そうではないような気がします。

答え1

更新サービスを実行する前の要件の一部として、ネットワークサービスの後に1つまたは2つのサービスを追加すると、スクリプトにスリープ10を追加するよりも効率的な遅延が追加されます。

関連情報