Я создал скрипт для добавления набора пакетов и обновления системы при новой установке. Вот соответствующая часть моего скрипта 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
к скрипту перед запуском apt
команд исправляет мою проблему. Я бы подумал, что добавление $network
в мой # Required-Start
список исправит эту проблему само по себе. Есть ли лучший способ справиться с этой проблемой?
Я попробую это сделать, Raspian Jessie 2016-03-18
если это что-то изменит, но у меня такое чувство, что это не так.
решение1
Добавление еще одной или двух служб для запуска после сетевой службы в качестве части требования перед запуском службы обновления должно добавить более продуктивную задержку, чем добавление sleep 10 в ваш скрипт.