Ubuntu 16 e versioni successive eseguono attività periodiche relative ad apt (come l'aggiornamento dell'elenco dei pacchetti e l'applicazione di aggiornamenti automatici) usando un timer di sistema. Questo timer di solito viene attivato all'inizio del lancio di Ubuntu 16 VPS, il che può causare il fallimento degli strumenti apt ( apt
, apt-get
) con un errore simile al seguente:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
Un caso d'uso comune degli script di avvio di Vultr è l'aggiornamento dei pacchetti di sistema. Senza controllare i codici di errore restituiti da apt
o apt-get
, gli aggiornamenti di sistema potrebbero non riuscire. Quando si verifica la condizione di blocco, apt
in genere restituisce il codice 100
.
Questo script di esempio può essere utilizzato come script di avvio Vultr per riprovare a installare gli aggiornamenti di sistema. Puoi modificarlo in base alle tue esigenze.
#!/bin/bash
UPGRADE_ATTEMPT_COUNT=100
UPGRADE_STATE=1
for i in `seq 1 $UPGRADE_ATTEMPT_COUNT`;
do
if [ "$UPGRADE_STATE" -eq "1" ]; then
apt-get -y update
if [ "`echo $?`" -eq "0" ]; then
echo "package list updated."
UPGRADE_STATE=2;
fi
fi
if [ "$UPGRADE_STATE" -eq "2" ]; then
apt-get -y upgrade
if [ "`echo $?`" -eq "0" ]; then
echo "packages updated."
UPGRADE_STATE=3;
fi
fi
if [ "$UPGRADE_STATE" -eq "3" ]; then
break
fi
sleep 5
done
if [ "$UPGRADE_STATE" -ne "3" ]; then
echo "ERROR: packages failed to update after $UPGRADE_ATTEMPT_COUNT attempts."
fi
Ulteriori informazioni sugli Aggiornamenti automatici sono disponibili nella documentazione di Ubuntu LTS .