Criei um script para adicionar vários pacotes e atualizar o sistema em uma nova instalação. Aqui está a parte relevante do meu script init.d que está me causando problemas:
#!/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
Tornei o script executável e registrei-o com o arquivo sudo update-rc.d update defaults
. Quando eu verifico isso após uma reinicialização sudo service update status
, recebo todos os repositórios de pacotes que não conseguem resolver:
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.
e o init.d
script termina aqui com code=exited
. No entanto, adicionar um sleep 10
ao script antes de executar os apt
comandos corrige meu problema. Eu teria pensado que adicionar itens $network
à minha # Required-Start
lista já resolveria esse problema por si só. Existe uma maneira melhor de lidar com esse problema?
Estou analisando isso Raspian Jessie 2016-03-18
se isso faz diferença, mas tenho a sensação de que não.
Responder1
adicionar mais um ou dois serviços para iniciar após o serviço de rede como parte do requisito antes de executar seu serviço de atualização deve adicionar um atraso mais produtivo em vez de adicionar um sleep 10 em seu script.