Downgrade πακέτα με την βοήθεια του apt

Η αναβάθμιση πακέτων ορισμένες φορές δημιουργεί προβλήματα στους χρήστες καθώς μία νέα έκδοση μπορεί να προσθέσει και να αφαιρέσει κάποιες δυνατότητες ή να έχει κάποιο bug το οποίο εμποδίζει την λειτουργικότητα του προγράμματος.

Αυτός ο οδηγός αναφέρεται σε όσους πουν "Eγώ όμως δεν θέλω αυτήν την καινούρια έκδοση,
πως μπορώ να επιστρέψω στην προηγούμενη που με έχει βολέψει;"

O διαχειριστής πακέτων (apt) μας δίνει την δυνατότητα για επιστροφή σε προηγούμενη έκδοση ενός πακέτου. Η επιστροφή αυτή γίνεται με την εντολή sudo apt install package=version.

Για να μας εμφανίσει ο διαχειριστής πακέτων (apt) τις διαθέσιμες εκδόσεις ενός πακέτου δίνουμε την εντολή apt policy package.

Άρα, η σωστή διαδικασία επιστροφής σε προηγούμενη έκδοση ενός πακέτου είναι:

  1. Ελέγχουμε μέσω της εντολής apt policy package την διαθεσιμότητα μιας προηγούμενης έκδοσης καθώς και το όνομα της έκδοσης.

  2. Χρησιμοποιούμε την εντολή sudo apt install package=version για την εγκατάσταση του πακέτου στην έκδοση που ο χρήστης επιθυμεί.

Συνήθως ο χρήστης θα αντιμετώπισει δύο σενάρια κατά την διάρκεια εγκατάσταση προηγούμενης έκδοσης:

  1. Το πακέτο να επιστρέψει στην προηγούμενη έκδοση χωρίς κανένα πρόβλημα.

  2. Το πακέτο να αρνείτε να επιστρέψει λόγω κάποιων εξαρτήσεων που δεν ικανοποιούνται.

Παράδειγμα 1

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

apt policy firefox

rollback1

Ο διαχειριστής πακέτων ενημερώνει ότι η εγκατεστημένη έκδοση είναι η 79.0+linuxmint1+ulyana . Έστω ότι ο χρήστης θέλει να επιστρέψει σε μια παλιότερη έκδοση την 75.0+build3-0ubuntu1 .

Για να γίνει αυτό, χρησιμοποιούμε την εντολή:

sudo apt install firefox=75.0+build3-0ubuntu1

rollback2

Επειδή δεν υπάρχει κάποια εξάρτηση που να εμποδίζει την μετάβαση σε παλιότερη έκδοση, η διαδικασία συνεχίζει κανονικά.

Παράδειγμα 2

Έστω ότι ο διαχειριστής αρχείων (nemo) αναβαθμίζεται και για διάφορους λόγους ο χρήστης θέλει να επιστρέψει στην έκδοση που χρησιμοποιούσε πριν την αναβάθμιση.

Για την επιστροφή του διαχειρστή αρχείων(nemo) σε προηγούμενη έκδοση εκτελούμε με την ίδια σειρά τις εντολές όπως στο παράδειγμα 1:

apt policy nemo

rollback3

sudo apt install nemo=4.4.2-2

rollback4

Μας ενημερώνει ο διαχειριστής πακέτων (apt) πως υπάρχουν κάποιες εξαρτήσεις που δεν ικανοποιούνται. Για να μπορέσουμε να ολοκληρώσουμε την διαδικασία πρέπει να ικανοποιήσουμε και τις εξαρτήσεις που στην συγκεκριμένη περίπτωση είναι τα libnemo-extension1 και nemo-data (μέσα στις παρενθέσεις βλέπουμε την έκδοση του πακέτου που χρειαζόμαστε). Επομένως μαζί με το πακέτο nemo πρέπει να εγκαταστήσουμε τις προηγούμενες εκδόσεις και στις εξαρτήσεις του.
Αυτό θα γίνει με την εντολή:

sudo apt install nemo=4.4.2-2 libnemo-extension1=4.4.2-2 nemo-data=4.4.2-2

Αυτήν την στιγμή ο διαχειριστής πακέτων μπορεί να εκτελέσει την διαδικασία απροβλημάτιστα και μπορούμε να έχουμε την προηγούμενη έκδοση του nemo.

Αποκλεισμός αναβαθμίσεων από μελλοντικές ενημερώσεις

Αν ο χρήστης δεν θέλει το πακέτο να αναβαθμιστεί στην νεότερη έκδοση σε κάποια επερχόμενη ενημερώση, μέχρι να βεβαιωθεί ότι έχει απαλλαχτεί από το πρόβλημα , τότε πρέπει να ορίσουμε στον διαχειριστή πακέτων όταν ψάχνει ενημερώσεις να αγνοεί το συγκεκριμένο πακέτο.
Αυτό θα το πετύχουμε με την εντολή sudo apt-mark hold package.

Στο παράδειγμα μας η συγκεκριμένη εντολή:

sudo apt-mark hold firefox nemo

rollback6

Ο apt ενώ βλέπει ότι υπάρχουν ενημερώσεις δεν προχωράει στην αναβάθμιση τους.

Στην περίπτωση, που πλέον ο χρήστης βεβαιώθηκε ότι είναι απαλλαγμένο από πακέτο από τα προβλήματα και θέλει ο διαχειριστής πακέτων να ενημερώνει ξανά τα πακέτα αυτά τότε η εντολή που χρειάζεται είναι sudo apt-mark unhold package.

Στο παράδειγμα μας:

sudo apt-mark unhold firefox nemo

rollback7

Και η αναβάθμιση τον πακέτων προχωράει κανονικά στις πλέον νέες εκδόσεις.

Παρατηρήσεις

  1. Τα πακέτα επιλέχτηκαν τυχαία πράγμα που σημαίνει ότι δεν υπάρχει λόγος να το κάνετε αν δεν υπάρχει όντως κάποιο πρόβλημα.

  2. Υπάρχει περίπτωση να συναντήσετε και κάποιες άλλες περιπτώσεις αλλά αυτές οι δύο είναι οι κατά κόρον περιπτώσεις που συναντώνται τις περισσότερες φορές.

  3. Ο συγκεκριμένος οδηγός αναφέρεται στις διανομές που έχουν σαν διαχειριστή πακέτων τον apt (Debian/Ubuntu based)

Σύνοψη Εντολών

Εργασία Εντολή
Εύρεση εκδόσεων ενός πακέτου apt policy package
Εγκατάσταση πακέτου σε διαφορετική έκδοση sudo apt install package=version
Αποκλεισμός πακέτου από μελλοντικές αναβαθμίσεις sudo apt-mark hold package
Επαναφορά πακέτου για αναβάθμιση sudo apt-mark unhold package

Πηγές:

  1. https://www.linuxuprising.com/2019/02/how-to-downgrade-packages-to-specific.html
  2. https://ubuntu-mate.community/t/how-to-install-a-previous-version-of-a-package/3854
13 Likes