Wyszukiwanie w witrynie

4 sposoby wyłączania/blokowania niektórych aktualizacji pakietów za pomocą polecenia Yum


Menedżer pakietów to oprogramowanie, które pozwala użytkownikowi na instalację nowego oprogramowania, aktualizację systemu, aktualizację dowolnego konkretnego oprogramowania i tym podobne. W przypadku systemów opartych na systemie Linux, w których jedno oprogramowanie ma wiele zależności, które muszą być obecne w systemie w celu pełnej instalacji tego oprogramowania, takie oprogramowanie, takie jak menedżer pakietów, staje się bardzo potrzebnym narzędziem w każdym systemie.

Każda dystrybucja Linuksa jest dostarczana z domyślnym menedżerem pakietów dla wyżej wymienionych funkcjonalności, ale ze wszystkich najczęściej spotykanych to: mniam w systemach RHEL i Fedora (gdzie jest obecnie zastępowany przez DNF od wersji Fedora 22 i nowsze) i apt z Debiana.

Jeśli szukasz narzędzia APT do blokowania lub wyłączania określonych aktualizacji pakietów, powinieneś przeczytać ten artykuł.

Dnf lub Danified yum zastępuje yum w systemach Fedora, co jest kolejnym na naszej liście. Jeśli zostaną właściwie zbadane, tych menedżerów pakietów można używać do następujących funkcji:

  1. Instalowanie nowego oprogramowania z repozytorium.
  2. Rozwiąż zależności oprogramowania, instalując te zależności przed instalacją oprogramowania.
  3. Prowadzenie bazy danych zależności każdego oprogramowania.
  4. Zmień wersję istniejącego oprogramowania na niższą.
  5. Aktualizacja wersji jądra.
  6. Lista pakietów dostępnych do instalacji.

Omówiliśmy już szczegółowe artykuły na temat poszczególnych menedżerów pakietów z praktycznymi przykładami. Musisz je przeczytać, aby kontrolować i zarządzać zarządzaniem pakietami w odpowiednich dystrybucjach Linuksa.

Przeczytaj także:

  1. Opanuj polecenie Yum dzięki 20 praktycznym przykładom
  2. 27 poleceń DNF do zarządzania pakietami w wersjach Fedory 22+
  3. Poznaj 25 poleceń APT do zarządzania pakietami Ubuntu

W artykule zobaczymy, jak zablokować/wyłączyć niektóre aktualizacje pakietów za pomocą menedżera pakietów Yum w systemach RHEL/CentOS i Fedora (obowiązuje do Fedory 21, później nowszej wersji Fedory jest dostarczany z dnf jako domyślnym menedżerem pakietów).

Wyłącz/zablokuj aktualizacje pakietów za pomocą Yum

Yellow dog Updater, zmodyfikowany (mniam) to narzędzie do zarządzania pakietami w dystrybucjach opartych na RedHat, takich jak CentOS i Fedora. Poniżej omówiono różne strategie stosowane do blokowania/wyłączania aktualizacji pakietów za pomocą Yum:

1. Trwale wyłącz pakiet na potrzeby instalacji lub aktualizacji

1. Otwórz i edytuj plik yum.conf, który znajduje się w /etc/yum.conf lub w /etc/ mniam/mniam.conf.

Wygląda to jak poniżej:

[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
...

Tutaj, aby wykluczyć określony pakiet z instalacji lub aktualizacji, wystarczy dodać zmienną wykluczającą wraz z nazwą pakietu, który chcesz wykluczyć. Na przykład, jeśli chcę wykluczyć wszystkie pakiety python-3 z aktualizacji, po prostu dołączę następujący wiersz do yum.conf:

exclude=python-3*

Aby wykluczyć więcej niż jeden pakiet, wystarczy oddzielić ich nazwy spacją.

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]
...

Uwaga: aby uwzględnić te pakiety, ignorując wpisy w yum.conf, użyj opcji „-disableexcludes” i ustaw go do all|main|repoid, gdzie 'main' to te wprowadzone w yum.conf i 'repoid' > to te, których wykluczenie jest określone w katalogu repos.d, jak wyjaśniono później.

Teraz spróbujmy zainstalować lub zaktualizować określone pakiety i zobaczmy, że polecenie yum wyłączy ich instalację lub aktualizację.

# 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. Tymczasowo wyłącz pakiet na potrzeby instalacji lub aktualizacji

2. Powyżej było trwałe rozwiązanie wykluczające pakiet, ponieważ jeśli plik nie zostanie zmodyfikowany, pakiet ten nie zostanie zaktualizowany. Tutaj jest również tymczasowe rozwiązanie tego problemu. Zaraz po uruchomieniu dowolnej aktualizacji użyj przełącznika -x w poleceniu yum, aby wykluczyć pakiet, którego nie chcesz aktualizować, na przykład:

yum -x python-3 update

Powyższe polecenie zaktualizuje wszystkie pakiety, których aktualizacje są dostępne, z wyjątkiem python-3 w twoim systemie.

Tutaj, aby wykluczyć wiele pakietów, użyj wielokrotnie -x lub oddziel nazwy pakietów za pomocą ',' w jednym przełączniku.

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

3. Użycie przełącznika --exclude działa tak samo jak -x, wystarczy zastąpić -x -x >–exclude i przekaż do niego oddzieloną listę nazw pakietów ','.

yum --exclude httpd,php

3. Wyłącz aktualizacje pakietów za pomocą repozytorium

4. W przypadku każdego pakietu instalowanego z dowolnego źródła zewnętrznego poprzez dodanie repozytorium istnieje inny sposób na zatrzymanie jego aktualizacji w przyszłości. Można to zrobić edytując plik .repo, który jest utworzony w /etc/yum/repos.d/ lub /etc/yum.repos.d< katalog.

Dodaj opcję wykluczania z nazwą pakietu w repo. Na przykład: aby wykluczyć dowolny pakiet, np. wine z repo epel, dodaj następujący wiersz w pliku 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

Teraz spróbuj zaktualizować pakiet wine, pojawi się błąd jak pokazano poniżej:

# 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. Wyłącz aktualizację pakietu przy użyciu opcji blokady wersji

5. Innym sposobem w yum na zamaskowanie wersji dowolnego pakietu, uniemożliwiając w ten sposób jego aktualizację, jest użycie opcji versionlock yum, ale w tym celu musisz musi być zainstalowany w systemie pakiet yum-plugin-versionlock.

yum -y install yum-versionlock

Na przykład, aby zablokować wersję pakietu, powiedz httpd tylko na 2.4.6, po prostu wpisz następujące polecenie jako root.

yum versionlock add httpd
Przykładowe wyjście
Loaded plugins: fastestmirror, langpacks, versionlock
Adding versionlock on: 0:httpd-2.4.6-40.el7.centos
versionlock added: 1

Aby wyświetlić zablokowane pakiety, użyj następującego polecenia, aby wyświetlić listę pakietów, których wersja została zablokowana.

yum versionlock list httpd
Przykładowe wyjście
Loaded plugins: fastestmirror, langpacks, versionlock
0:httpd-2.4.6-40.el7.centos.*
versionlock list done

Wniosek

Oto kilka wskazówek, które pomogą Ci wyłączyć/zablokować aktualizacje pakietów za pomocą menedżera pakietów Yum. Jeśli masz jakieś inne sztuczki, aby zrobić to samo, możesz je skomentować u nas.