4 τρόποι απενεργοποίησης/κλειδώματος συγκεκριμένων ενημερώσεων πακέτων χρησιμοποιώντας την εντολή Yum


Το Package Manager είναι λογισμικό που επιτρέπει σε έναν χρήστη σε περίπτωση εγκατάστασης νέου λογισμικού, αναβάθμισης του συστήματος ή ενημέρωση οποιουδήποτε συγκεκριμένου λογισμικού και τέτοιου είδους πραγμάτων. Στην περίπτωση συστημάτων που βασίζονται στο Linux όπου ένα λογισμικό έχει πολλές εξαρτήσεις που απαιτούνται να υπάρχουν στο σύστημα για την πλήρη εγκατάσταση αυτού του λογισμικού, τέτοιο λογισμικό όπως ο διαχειριστής πακέτων γίνεται ένα πολύ απαραίτητο εργαλείο σε κάθε σύστημα.

Κάθε διανομή Linux αποστέλλεται με τον προεπιλεγμένο διαχειριστή πακέτων για τις λειτουργίες που αναφέρθηκαν παραπάνω, αλλά από όλες αυτές τις πιο ευρεθείσες είναι οι εξής: yum σε συστήματα RHEL και Fedora (όπου αυτή τη στιγμή αντικαθίσταται με DNF από το Fedora 22+ και μετά) και apt από το Debian.

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

Το Dnf ή το Danified yum αντικαθιστά το yum στα συστήματα Fedora που είναι ένα άλλο στη λίστα μας. Εάν διερευνηθούν σωστά, αυτοί οι Διαχειριστές πακέτων μπορούν να χρησιμοποιηθούν για τις ακόλουθες λειτουργίες:

  1. Εγκατάσταση νέου λογισμικού από το χώρο αποθήκευσης.
  2. Επιλύστε τις εξαρτήσεις του λογισμικού εγκαθιστώντας αυτές τις εξαρτήσεις πριν εγκαταστήσετε το λογισμικό.
  3. Διατήρηση βάσης δεδομένων των εξαρτήσεων κάθε λογισμικού.
  4. Υποβαθμίστε την έκδοση οποιουδήποτε υπάρχοντος λογισμικού.
  5. Αναβάθμιση της έκδοσης του πυρήνα.
  6. Πακέτα καταχώρισης διαθέσιμα για εγκατάσταση.

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

Διαβάστε επίσης:

  1. Κατακτήστε την εντολή Yum με αυτά τα 20 πρακτικά παραδείγματα
  2. 27 εντολές DNF για διαχείριση πακέτων σε εκδόσεις Fedora 22+
  3. Μάθετε 25 εντολές APT για τη διαχείριση πακέτων Ubuntu

Στο άρθρο, θα δούμε πώς μπορείτε να κλειδώσετε/απενεργοποιήσετε ορισμένες ενημερώσεις πακέτων χρησιμοποιώντας τη διαχείριση πακέτων Yum σε συστήματα RHEL/CentOS και Fedora (ισχύει έως το Fedora 21, αργότερα νεότερη έκδοση Fedora αποστέλλεται με το dnf ως προεπιλεγμένο διαχειριστή πακέτων).

Απενεργοποίηση/Κλείδωμα ενημερώσεων πακέτων χρησιμοποιώντας το Yum

Το Yellow dog Updater, Modified (yum) είναι εργαλείο διαχείρισης πακέτων σε διανομές που βασίζονται στο RedHat, όπως το CentOS και το Fedora. Διάφορες στρατηγικές που χρησιμοποιούνται για το κλείδωμα/απενεργοποίηση των ενημερώσεων πακέτων χρησιμοποιώντας το Yum συζητούνται παρακάτω:

1. Απενεργοποιήστε οριστικά το πακέτο για εγκατάσταση ή ενημέρωση

1. Ανοίξτε και επεξεργαστείτε το αρχείο yum.conf, το οποίο βρίσκεται στο /etc/yum.conf ή στο /etc/ yum/yum.conf.

Μοιάζει όπως παρακάτω:

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
...

Εδώ, για να εξαιρέσετε ένα συγκεκριμένο πακέτο από την εγκατάσταση ή την αναβάθμιση, πρέπει απλώς να προσθέσετε τη μεταβλητή αποκλεισμού μαζί με το όνομα του πακέτου που θέλετε να εξαιρέσετε. Για παράδειγμα, εάν θέλω να εξαιρέσω όλα τα πακέτα python-3 από την ενημέρωση, τότε απλώς θα προσθέσω την ακόλουθη γραμμή στο yum.conf:

exclude=python-3*

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

exclude=httpd php 
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
exclude=python-3*        [Exclude Single Package]
exclude=httpd php        [Exclude Multiple Packages]
...

Σημείωση: για να συμπεριλάβετε αυτά τα πακέτα, αγνοώντας τις καταχωρίσεις στο yum.conf, χρησιμοποιήστε \-disableexcludes και ορίστε το σε all|main|repoid, όπου main είναι αυτά που έχουν εισαχθεί στο yum.conf και στο repoid είναι εκείνα των οποίων η εξαίρεση καθορίζεται στον κατάλογο repos.d, όπως εξηγείται παρακάτω.

Τώρα ας προσπαθήσουμε να εγκαταστήσουμε ή να ενημερώσουμε τα καθορισμένα πακέτα και να δούμε ότι η εντολή yum θα απενεργοποιήσει την εγκατάσταση ή την ενημέρωση τους.

# yum install httpd php

Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
Nothing to do
# yum update httpd php

Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
No packages marked for update

2. Απενεργοποιήστε προσωρινά το πακέτο για εγκατάσταση ή ενημέρωση

2. Παραπάνω ήταν μια μόνιμη λύση για τον αποκλεισμό ενός πακέτου, καθώς εάν δεν γίνει επεξεργασία του αρχείου, αυτό το πακέτο δεν θα ενημερωθεί. Εδώ υπάρχει μια προσωρινή λύση και για αυτό. Ακριβώς τη στιγμή που πηγαίνετε για οποιαδήποτε ενημέρωση, χρησιμοποιήστε το διακόπτη -x στην εντολή yum για να εξαιρέσετε το πακέτο που δεν θέλετε να ενημερώσετε, όπως:

# yum -x python-3 update

Η παραπάνω εντολή θα ενημερώσει όλα τα πακέτα των οποίων οι ενημερώσεις είναι διαθέσιμες, εξαιρουμένου του python-3 στο σύστημά σας.

Εδώ, για να εξαιρέσετε πολλά πακέτα, χρησιμοποιήστε το -x πολλές φορές ή διαχωρίστε τα ονόματα πακέτων με , σε έναν μόνο διακόπτη.

# yum -x httpd -x php update
OR
# yum -x httpd,php update

3. Η χρήση του διακόπτη --exclude λειτουργεί όπως το -x, απλώς πρέπει να αντικαταστήσετε το -x με το –εξαίρεση και μεταβίβαση , διαχωρισμένη λίστα ονομάτων πακέτων σε αυτό.

# yum --exclude httpd,php

3. Απενεργοποιήστε τις ενημερώσεις πακέτων χρησιμοποιώντας το Αποθετήριο

4. Για κάθε πακέτο που είναι εγκατεστημένο από οποιαδήποτε εξωτερική πηγή μέσω της προσθήκης ενός αποθετηρίου, υπάρχει άλλος τρόπος να σταματήσετε την αναβάθμισή του στο μέλλον. Αυτό μπορεί να γίνει με την επεξεργασία του αρχείου του .repo που δημιουργείται στο /etc/yum/repos.d/ ή /etc/yum.repos.d< κατάλογος.

Προσθέστε την επιλογή εξαίρεσης με το όνομα του πακέτου στο repo. Όπως: για να εξαιρέσετε οποιοδήποτε πακέτο π.χ. wine από το epel repo, προσθέστε την ακόλουθη γραμμή στο αρχείο epel.repo:

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
exclude=wine

Προσπαθήστε τώρα να ενημερώσετε το πακέτο wine, θα λάβετε σφάλμα όπως φαίνεται παρακάτω:

# yum update wine

Loaded plugins: fastestmirror, langpacks, versionlock
epel/x86_64/metalink                                    | 5.6 kB     00:00     
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
No Match for argument: wine
No package wine available.
No packages marked for update

4. Απενεργοποιήστε την ενημέρωση πακέτου χρησιμοποιώντας την επιλογή versionlock

5. Ένας άλλος τρόπος στο yum για να κρύψετε την έκδοση οποιουδήποτε πακέτου, καθιστώντας το έτσι μη διαθέσιμο για αναβάθμιση, είναι να χρησιμοποιήσετε την επιλογή versionlock του yum, αλλά για να το κάνετε αυτό, πρέπει να είναι εγκατεστημένο στο σύστημα το πακέτο yum-plugin-versionlock.

# yum -y install yum-versionlock

Για παράδειγμα, για να κλειδώσετε την έκδοση του πακέτου πείτε httpd έως 2.4.6 μόνο, απλώς γράψτε την παρακάτω εντολή ως root.

# yum versionlock add httpd
Δείγμα εξόδου
Loaded plugins: fastestmirror, langpacks, versionlock
Adding versionlock on: 0:httpd-2.4.6-40.el7.centos
versionlock added: 1

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

# yum versionlock list httpd
Δείγμα εξόδου
Loaded plugins: fastestmirror, langpacks, versionlock
0:httpd-2.4.6-40.el7.centos.*
versionlock list done

συμπέρασμα

Αυτές είναι μερικές συμβουλές που θα σας βοηθήσουν να απενεργοποιήσετε/κλειδώσετε ενημερώσεις πακέτων χρησιμοποιώντας τη διαχείριση πακέτων yum. Εάν έχετε άλλα κόλπα για να κάνετε τα ίδια πράγματα, μπορείτε να τα σχολιάσετε μαζί μας.