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 10apt$network# Required-Start

違いがあるかどうか確認するためにこれを実行していますRaspian Jessie 2016-03-18が、違いはないような気がします。

答え1

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

関連情報