Το Ubuntu 16 και νεότερο εκτελεί περιοδικές εργασίες που σχετίζονται με το apt (όπως ενημέρωση της λίστας πακέτων και εφαρμογή αναβαθμίσεων χωρίς επίβλεψη) χρησιμοποιώντας ένα χρονόμετρο συστήματος. Αυτός ο χρονοδιακόπτης συνήθως ενεργοποιείται στην αρχή της εκκίνησης ενός Ubuntu 16 VPS, κάτι που μπορεί να προκαλέσει την αποτυχία των apt tools ( apt, apt-get) με ένα σφάλμα παρόμοιο με το ακόλουθο:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
Μια συνηθισμένη περίπτωση χρήσης των σεναρίων εκκίνησης Vultr είναι η ενημέρωση των πακέτων συστήματος. Χωρίς έλεγχο των κωδικών σφάλματος που επιστρέφονται από aptή apt-get, οι ενημερώσεις συστήματος μπορεί να αποτύχουν. Όταν αντιμετωπιστεί η συνθήκη κλειδώματος, aptσυνήθως επιστρέφει τον κωδικό 100.
Αυτό το δείγμα δέσμης ενεργειών μπορεί να χρησιμοποιηθεί ως σενάριο εκκίνησης Vultr για να προσπαθήσετε ξανά να εγκαταστήσετε ενημερώσεις συστήματος. Μπορείτε να το τροποποιήσετε για να ταιριάζει στις ανάγκες σας.
#!/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
Περισσότερες πληροφορίες σχετικά με τις Αυτόματες ενημερώσεις είναι διαθέσιμες στην τεκμηρίωση του Ubuntu LTS .