Arch Linux: Αυτόματη λήψη αναβαθμίσεων με SystemD

Μιας και το Arch Linux λαμβάνει καθημερινά αναβαθμίσεις το συστήματος, είναι εξαιρετικά βολικό όταν το ρυθμίζουμε να κάνει αυτόματα την λήψη τους στο παρασκήνιο.

Εισαγωγή

Η μεγάλη διαφορά του Arch Linux από όλες τις άλλες διανομές είναι η κυλιόμενη εγκατάσταση αναβαθμίσεων. Με άλλα λόγια διαθέτει το πιο πετυχημένο μοντέλο αναβαθμίσεων από οποιοδήποτε άλλο λειτουργικό σύστημα εκεί έξω.

Παρόλο που οι καθημερινές αυτές αναβαθμίσεις που λαμβάνει ο χρήστης στο Arch του είναι των σταθερών εκδόσεων, εντούτοις δεν υπάρχει επίσημος μηχανισμός αυτόματων λήψεων και εγκατάστασής τους.

Advertisements

Αυτό συμβαίνει για δύο βασικούς λόγους:

  1. Ένας τέτοιος μηχανισμός παραβαίνει την φιλοσοφία KISS του Arch μιας και προσθέτει μια επιπλέον και απρόβλεπτη πολυπλοκότητα στο σύστημά του
  2. Παρότι οι αναβαθμίσεις είναι σταθερές εκδόσεις (όχι πειραματικές αλλά ούτε καν εκδόσεις x.0 ) εντούτοις εγκυμονούν κινδύνους σε περιπτώσεις μεγάλων αναβαθμίσεων, διακοπής ρεύματος, σφάλματα στην λήψη κ.α.

Σε αντίθεση με άλλες διανομές όπου οι ενημερώσεις είναι απλά διορθώσεις στα υπάρχοντα λογισμικά και μπορούμε με ασφάλεια να ενεργοποιήσουμε αυτόματες εγκαταστάσεις ενημερώσεων (όπως π.χ. στο Ubuntu / Debian /Mint κλπ) στο Arch κάτι τέτοιο δεν συστήνεται. Παρόλα αυτά μπορεί να γίνει ρύθμιση, ώστε να γίνεται αυτόματα η λήψη τους χωρίς απαραίτητα και η εγκατάστασή τους.

Για να το πετύχουμε αυτό θα δημιουργήσουμε από το μηδέν μια υπηρεσία SystemD που θα κάνει έλεγχο και ταυτόχρονα λήψη αυτών των αναβαθμίσεων ώστε, όταν το επιθυμούμε να μπορούμε να τις κάνουμε εγκατάσταση χωρίς να περιμένουμε και την λήψη τους.

Δημιουργία υπηρεσίας SystemD για τον έλεγχο και λήψη αναβαθμίσεων.

Πρώτα θα δημιουργήσουμε την υπηρεσία ελέγχου και λήψης αναβαθμίσεων του Arch και έπειτα θα δημιουργήσουμε την υπηρεσία που θα το εκτελεί ανά τακτά διαστήματα.

sudo nano /etc/systemd/system/autoupgrade.service

έπειτα στο αρχείο autoupgrade.service που θα ανοίξει κάνουμε επικόλληση τα παρακάτω:

[Unit]
Description=Αυτόματη λήψη αναβαθμίσεων
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/pacman -Syuwq --noconfirm
TimeoutStopSec=180
KillMode=process
KillSignal=SIGINT

[Install]
WantedBy=multi-user.target

Αποθηκεύουμε και κλείνουμε το αρχείο.

Το παραπάνω με λίγα λόγια ελέγχει αν υπάρχει σύνδεση στο διαδίκτυο και έπειτα εκτελεί pacman -Syuwq –noconfirm. Το μόνο που μένει τώρα είναι να φτιάξουμε την υπηρεσία που θα εκτελεί ανά τακτά διαστήματα την autoupgrade.service:

sudo nano /etc/systemd/system/autoupgrade.timer

έπειτα στο αρχείο autoupgrade.timer που θα ανοίξει κάνουμε επικόλληση τα παρακάτω:

[Unit]
Description=Αυτόματος έλεγχος αναβαθμίσεων
[Timer]
OnBootSec=5min
OnUnitActiveSec=120min
Unit=autoupgrade.service

[Install]
WantedBy=multi-user.target

Αποθηκεύουμε και κλείνουμε το αρχείο.

Το παραπάνω με λίγα λόγια περιμένει να ολοκληρωθεί η εκκίνηση του συστήματος και έπειτα από 5 λεπτά (OnBootSec=5min) ελέγχει για πρώτη φορά την διαθεσιμότητα η μη των αναβαθμίσεων του Arch εκκινώντας την υπηρεσία autoupgrade.service (Unit=autoupdate.service). Έπειτα για όσο διάστημα φυσικά είναι ανοιχτός ο υπολογιστής, επαναλαμβάνει την διαδικασία εκτέλεσης του autoupgrade.service κάθε 2 ώρες (OnUnitActiveSec=120min).

Εσείς, φυσικά μπορείτε να «πειράξετε» τους χρόνους που αναφέρω κατά το δοκούν.

Advertisements

Ενεργοποίηση, Έλεγχος και απενεργοποίηση της υπηρεσίας.

automates-anavathmiseis-archlinux

Για να ενεργοποιήσουμε την υπηρεσία ώστε να εκτελείται με κάθε εκκίνηση του υπολογιστή μας, δίνουμε:

sudo systemctl enable autoupgrade.timer

Τώρα κάντε μια επανεκκίνηση το σύστημά σας. Έπειτα, αφού ολοκληρωθεί η εκκίνηση του συστήματος μπορείτε να ελέγξετε την κατάστασή του, δίνοντας:

sudo systemctl status autoupgrade.timer

όπως επίσης και την κατάσταση και τα μηνύματα του ίδιου του autoupgrade.service

sudo systemctl status autoupgrade.service

Εάν για κάποιο λόγο επιθυμείτε να απενεργοποιήσετε την υπηρεσία τότε απλά δίνετε :

sudo systemctl disable autoupgrade.timer

και έπειτα το σταματάτε με :

sudo systemctl stop autoupgrade.timer

Επίλογος

Όπως είδαμε, είναι πολύ απλό να δημιουργήσουμε μια υπηρεσία που θα κάνει αυτόματη λήψη των αναβαθμίσεων στο Arch. Ο προσεκτικός παρατηρητής θα δει οτι όλη η «μαγική εντολή που κάνει την δουλειά είναι η γραμμή :

ExecStart=/usr/bin/pacman -Syuwq --noconfirm

στο αρχείο autoupgrade.service. Αν, ο αναγνώστης επιθυμεί αντί απλά να γίνετε λήψη να γίνεται και ταυτόχρονα και εγκατάσταση αυτών τον αναβαθμίσεων τότε απλά αλλάζει την παράμετρο «-Syuwq» σε «-Syuq». ΣΕ ΚΑΜΙΑ ΠΕΡΙΠΤΩΣΗ δεν το συστήνω διότι πολύ απλά αν πάει κάτι στραβά, θα έχετε ένα σύστημα που δεν ξεκινάει !

Advertisement

15 σκέψεις σχετικά με το “Arch Linux: Αυτόματη λήψη αναβαθμίσεων με SystemD

Add yours

  1. Δεν θέλω να πάρω κανέναν «στο λαιμό μου», αλλά προσωπικά χρησιμοποιώ το «Do not try this at home» . https://wiki.archlinux.org/index.php/Update_packages_from_crontab
    Βασικά είναι το ίδιο πράγμα με αυτό που έχει δημοσιευτεί εδώ, απλά εκεί χρησιμοποιεί Cron αντί systemd timer.
    Είναι όντως επικίνδυνο και σε παραγωγικά συστήματα πρέπει να αποφεύγεται. Μέχρι στιγμής πάντως δεν έχει σπάσει κάτι … ακόμη. (περίπου 6 μήνες).

    1. Εγώ δεν το ρισκάρω γιατί 2 φορές που δεν πρόσεξα έγινε κουραμπιέδες το σύστημα πριν απο 2 χρόνια :)

    2. Aπορία: πες ότι κάποιος αρχάριος σε antegros δεν βάζει auto-updates και κάθε μέρα κάνει update μόνος του. Διατρέχει τον ίδιο κίνδυνο; (πχ εγώ καθημερινά κάνω shutdown το ubuntu τρέχοντας ένα ucare-system-core με παράμετρο όταν τελειώσει, να σβήσει…άλλο το ubuntu βέβαια και δη το 14,04 lts που είμαι ακόμα, αλλά το φέρνω σαν παράδειγμα, αν κάνω το ίδιο σε antegros τι θα γίνει;)

    3. Ο μόνος κίνδυνος που διατρέχει είναι να μην προσέξει κάτι στα αποτελέσματα και μηνύματα του τερματικού καθώς γίνεται αναβάθμιση. Για αυτό τον λόγο και μόνο δεν συνιστώ τις αυτόματες εγκαταστάσεις που γίνονται στο παρασκίνιο χωρίς δηλαδή την επίβλεψη του χρήστη. Όλα αυτά φυσικά ισχύουν για το Arch. Στο Ubuntu και τις αυτόματες εγκαταστάσεις μπορείς να ενεργοποιήσεις και να μην φοβάσαι.
      Για αυτό στο άρθρο το παραπάνω, δείχνω μια υπηρεσία για αυτόματη λήψη (για να μην περιμένεις ) και όχι αυτόματαη εγκατάσταση.

  2. Αν τα repositories που τραβάς τα updates είναι τα official και είσαι σε stable διανομή δεν έχεις κάτι να φοβάσαι. Τώρα, αν παει κανείς και βάλει αυτόματες ενημερώσεις σε rolling distro ή κανένα bleeding-edge/unstable τότε κακό του κεφαλιού του :P Ωραίο άρθρο btw ;)

    1. Thanks. Ναι το pacman τραβάει μονο απο τα officials για αυτο και το χρησιμοποιώ εδώ. Μπορεις βέβαια αντι αυτο και με λίγο τροποποίηση να τραβάς και του AUR αλλά δεν το συνιστώ.

  3. Επίσης, άσχετο με το παρόν άρθρο, σχετικό όμως με Arch και extra αποθετήρια στον Pacman. Μιας και μόλις σήμερα συνέβηκε (σε μένα).
    Έπειτα από αναβάθμιση του συστήματος δεν άνοιγε το VirtualBox με μήνυμα λάθους

    failed: /usr/lib/libharfbuzz.so.0: undefined symbol: FT_Get_Var_Blend_Coordinates

    Ο λόγος (του λάθους) ήταν η προσθήκη του αποθετηρίου infinality-bundle στο pacman.conf, το οποίο φαίνεται κάπως παρατημένο. Έχει να αναβαθμιστεί εδώ και αρκετό καιρό.
    Έτσι λοιπόν, η αναβάθμιση του συστήματος και συγκεκριμένα του πακέτου harfbuzz, έσπασε τη λειτουργία του VirtualBox.
    Η λύση ήταν να κάνω εγκατάσταση το freetype2 από τα επίσημα αποθετήρια, το οποίο απομάκρυνε το infinality-bundle από το unofficial αποθετήριο και επίσης να απομακρύνω το αποθετήριο από το pacman.conf.

    1. Φαίνεται να το συνεχίζουν στο AUR. Το αποθετήριο που φιλοξενούσε τα patchαρισμένα πακέτα όμως, είναι παρατημένο.
      Οπότε, όποιος θέλει infinality καλύτερα να χρησιμοποιήσει τα πακέτα από το AUR ( freetype2-infinality και fontconfig-infinality), αν και εν έτη 2017 το rendering έχει βελτιωθεί αισθητά.
      Προσωπικά δε το χρησιμοποιώ πλέον. Ξεχασμένο ήταν, από όταν το είχα προσθέσει. Να που ήρθε η ώρα να φάει σουτ.

  4. Βρήκα τώρα αυτό το άρθρο, πολύ ενδιαφέρον!

    Υπάρχει όμως ένα μικρό «ορθογραφικό» σφάλμα στον κώδικα του .timer αρχείου: γράφει
    Unit=autoupdate.service
    ενώ θα έπρεπε να γράφει
    Unit=autoupgrade.service

    1. Σε ευχαριστώ πολύ !!
      Επ’ευκαιρίας, βελτίωσα και την εμφάνιση του κώδικα στο άρθρο μαζί με την διόρθωση που ανέφερες !

  5. Minor nitpick: Το όνομα του unit είναι autoupgrade ενώ στην πραγματικότητα δεν γίνεται upgrade, απλά download.

    Επίσης, μία πιθανή βελτίωση είναι να τρέχει περιοδικά και ένα paccache -r -k3 ώστε να μην τελειώνει ο χώρος στο δίσκο.

    1. Thanks, ναι έχεις δίκιο γιαυτό και γράφω : ο προσεκτικός αναγνώστης [εσύ:P] που επιθυμεί αντί απλά να γίνετε λήψη να γίνεται και ταυτόχρονα και εγκατάσταση αυτών τον αναβαθμίσεων τότε απλά αλλάζει την παράμετρο «-Syuwq» σε «-Syuq».

      Επίσης πολύ καλή ιδέα η προσθήκη σου ! Που και πως θα πρότεινες να μπει? ή ως ξεχωριστό unit ?

  6. Salih το βρίσκω επικίνδυνο αυτό το script.
    Εντός 2020 και μέχρι σήμερα 28 Σεπτεμβρίου 2020, τα updates ζήτησαν 4 (τέσσερις) φορές manual intervention. Βεβαίως ισχύει η κολοκυθόπιττα…
    Η εντολή paccache -r ενεργοποιείτε με systemctl enable paccache.timer και ξεσκαρτάρει εβδομαδιαίως. Βεβαίως μπορεί να φτιαχτεί και script όπως το ακόλουθο:
    cat /etc/pacman.d/hooks/clear_cache.hook
    [Trigger]
    Operation = Upgrade
    Operation = Install
    Operation = Remove
    Type = Package
    Target = *

    [Action]
    Description = Cleaning pacman cache…
    When = PostTransaction
    Exec = /usr/bin/paccache -r

    Κάποιος ίσως να αλλάξει σε paccache -ruk3 ή οτιδήποτε άλλο.

    Συμπερασματικά, ωραίο το σκριπτάκι. Ευχαριστώ δεν θα πάρω ειδικά και συγκεκριμένα το unattended upgrade.

    1. Πραγματικά δεν καταλαβαίνω το σχόλιο: το σκριπτάκι που παρέχεται δεν έχει τίποτα το επικίνδυνο, απλώς κατεβάζει τα πακέτα, και έτσι όταν κάποτε θελήσεις να κάνεις ενημέρωση, δεν θα περιμένεις εκείνη την ώρα να κατέβουν. Ο Salih πουθενά δεν προτείνει αυτόματη αναβάθμιση, και το λέει πολλές φορές ότι είναι επικίνδυνη.

Σου άρεσε το άρθρο; Πες την άποψή σου... έστω και Ανώνυμα:

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση /  Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση /  Αλλαγή )

Σύνδεση με %s

Ο ιστότοπος χρησιμοποιεί το Akismet για την εξάλειψη των ανεπιθύμητων σχολίων. Μάθετε πως επεξεργάζονται τα δεδομένα των σχολίων σας.

Create a website or blog at WordPress.com

ΠΑΝΩ ↑

Αρέσει σε %d bloggers: