複数のパッケージを追加し、新規インストール時にシステムを更新するスクリプトを作成しました。これは私に問題を引き起こす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を追加するよりも効率的な遅延が追加されます。