Ubuntu 16 i posterior realitza tasques periòdiques relacionades amb apt (com ara actualitzar la llista de paquets i aplicar actualitzacions desateses) mitjançant un temporitzador systemd. Aquest temporitzador s'activa normalment a l'inici del llançament d'un Ubuntu 16 VPS, cosa que pot provocar que les eines aptes ( apt, apt-get) fallin amb un error similar al següent:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
Un cas d'ús comú dels scripts d'inici de Vultr és actualitzar els paquets del sistema. Sense comprovar els codis d'error retornats de apto apt-get, les actualitzacions del sistema poden fallar. Quan es troba la condició de bloqueig, aptnormalment tornarà el codi 100.
Aquest script d'exemple es pot utilitzar com a script d'inici de Vultr per tornar a intentar instal·lar actualitzacions del sistema. Podeu modificar-lo segons les vostres necessitats.
#!/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
Trobareu més informació sobre les actualitzacions automàtiques a la documentació d'Ubuntu LTS .