در این مقاله به شما نشان خواهیم داد؛ که چگونه در هنگام آپدیت سیستم‌عامل با استفاده از دستور yum، از بروزرسانی بعضی بسته‌ها جلوگیری کنیم؛ به صورت دوره ای، شما ممکن است، بخواهید سیستم CentOS یا RHEL خود را به روز کنید؛ ولیکن برخی از بسته‌ها، به خصوص اگر به روزرسانی‌ها با برخی از برنامه‌های مهم اصلی در سیستم تداخل داشته باشند، نباید به روزرسانی شوند.

 

جلوگیری از به روزرسانی برخی از بسته‌ها

در ابتدای کار می‌خواهیم با اجرای دستور زیر بررسی کنیم؛ که کدام بسته‌ها با استفاده از مدیریت بسته Yum در Centos 7 به روز رسانی می‌شوند.

yum list updates | cat -n

با اجرای دستور بالا خروجی به صورت زیر خواهد بود:

1 Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
2 Updated Packages
3 bind-libs-lite.x86_64 32:9.9.4-51.el7_4.2 rhui-REGION-rhel-server-releases
4 bind-license.noarch 32:9.9.4-51.el7_4.2 rhui-REGION-rhel-server-releases
5 binutils.x86_64 2.25.1-32.base.el7_4.2 rhui-REGION-rhel-server-releases
6 cloud-init.x86_64 0.7.9-9.el7_4.2 rhui-REGION-rhel-server-releases
7 dhclient.x86_64 12:4.2.5-58.el7_4.1 rhui-REGION-rhel-server-releases
8 dhcp-common.x86_64 12:4.2.5-58.el7_4.1 rhui-REGION-rhel-server-releases
9 dhcp-libs.x86_64 12:4.2.5-58.el7_4.1 rhui-REGION-rhel-server-releases
10 glibc.x86_64 2.17-196.el7_4.2 rhui-REGION-rhel-server-releases
11 glibc-common.x86_64 2.17-196.el7_4.2 rhui-REGION-rhel-server-releases
12 initscripts.x86_64 9.49.39-1.el7_4.1 rhui-REGION-rhel-server-releases
13 iwl7265-firmware.noarch 22.0.7.0-58.el7_4 rhui-REGION-rhel-server-releases
14 kernel.x86_64 3.10.0-693.17.1.el7 rhui-REGION-rhel-server-releases
15 kernel-tools.x86_64 3.10.0-693.17.1.el7 rhui-REGION-rhel-server-releases
16 kernel-tools-libs.x86_64 3.10.0-693.17.1.el7 rhui-REGION-rhel-server-releases

برای جلوگیری از به روزرسانی یک بسته مشخص، از دستور زیر باید استفاده نمود:

yum --exclude=packagename\* update

به عنوان مثال، اگر می‌خواهید بسته glibc (سطر دهم در لیست بالا) را حذف کنید، باید دستور زیر را اجرا کنید:

# yum --exclude=glibc\* update

که دراین‌صورت خروجی به صورت زیر خواهد بود:

Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
Resolving Dependencies
--> Running transaction check
---> Package bind-libs-lite.x86_64 32:9.9.4-51.el7_4.1 will be updated
---> Package bind-libs-lite.x86_64 32:9.9.4-51.el7_4.2 will be an update
---> Package bind-license.noarch 32:9.9.4-51.el7_4.1 will be updated
---> Package bind-license.noarch 32:9.9.4-51.el7_4.2 will be an update
---> Package binutils.x86_64 0:2.25.1-32.base.el7_4.1 will be updated
---> Package binutils.x86_64 0:2.25.1-32.base.el7_4.2 will be an update
---> Package cloud-init.x86_64 0:0.7.9-9.el7_4.1 will be updated
---> Package cloud-init.x86_64 0:0.7.9-9.el7_4.2 will be an update
---> Package dhclient.x86_64 12:4.2.5-58.el7 will be updated
---> Package dhclient.x86_64 12:4.2.5-58.el7_4.1 will be an update
---> Package dhcp-common.x86_64 12:4.2.5-58.el7 will be updated
---> Package dhcp-common.x86_64 12:4.2.5-58.el7_4.1 will be an update
---> Package dhcp-libs.x86_64 12:4.2.5-58.el7 will be updated
---> Package dhcp-libs.x86_64 12:4.2.5-58.el7_4.1 will be an update
---> Package initscripts.x86_64 0:9.49.39-1.el7 will be updated
---> Package initscripts.x86_64 0:9.49.39-1.el7_4.1 will be an update

اگر دقت کرده باشید، بسته بندی glibc دیگر در لیست به روز رسانی ما قرار ندارد؛ زیرا ما آن را در دستور خود حذف کردیم.

برای غیرفعال کردن بروزرسانی یک لیست از بسته‌ها، باید دستور زیر را اجرا نمایید:

# yum --exclude=glibc\* --exclude=cloud-init\* update

روش دیگر برای این کار، اجرای دستور زیر می‌باشد:

yum -x 'packagename*' update

برای حذف بیش از یک بسته با استفاده از همان دستور، دستور زیر را اجرا کنید:

yum -x 'packageName1*' -x 'packageName2*' update

جلوگیری از آپدیت شدن بسته‌های خاص از به روزرسانی Yum

برای غیرفعال کردن به روز رسانی برخی از بسته‌ها، فایل پیکربندی زیر را با یک ویرایشگر متن مورد نظر خود باز کنید:

/etc/yum.conf

در پایان فایل پیکربندی، عبارت زیر را اضافه کنید:

exclude=samba httpd mariadb php

عبارت فوق بسته‌های samba، httpd، MariaDB، PHP را از به روزرسانی حذف می‌نماید.

برای حذف بسته‌های 32 بیتی باید از عبارت زیر استفاده کنید:

exclude=*.i?86 *.i686

اکنون هرچقدر برای به روز رسانی هرکدام از بسته‌ها تلاش کنید، همانطور که در ادامه نشان داده شده است، پیامی با این متن دریافت می‌کنید که: "هیچ بسته ای برای بروزرسانی مشخص نشده است":
 

[root@ip-172-31-16-136 ec2-user]# yum update httpd
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
rhui-REGION-client-config-server-7                                                                                                               | 2.9 kB  00:00:00
rhui-REGION-rhel-server-releases                                                                                                                 | 3.5 kB  00:00:00
rhui-REGION-rhel-server-rh-common                                                                                                                | 3.8 kB  00:00:00
No packages marked for update
[root@ip-172-31-16-136 ec2-user]# yum update samba
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
No packages marked for update
[root@ip-172-31-16-136 ec2-user]# yum update mariadb
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
No packages marked for update
[root@ip-172-31-16-136 ec2-user]# yum update php
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
No packages marked for update

 

این مطلب نیز ممکن است برای شما مفید باشد: نحوه نصب و فعال سازی مخزن EPEL در CentOS 8/7/6

 

 

غیرفعال کردن به روز رسانی برخی از بسته‌ها با استفاده از مخزن

در ابتدا اگر می‌خواهید به مخازن موجود در سیستم خود نگاهی بیندازید، باید دستور زیر را اجرا کنید:

yum repolist


که در این صورت خروجی به صورت زیر خواهد بود:


repo id                                repo name                                                                                        status
Webmin                                 Webmin Distribution Neutral                                                         111
base/7/x86_64                          CentOS-7 - Base                                                                              9,591
epel/x86_64                            Extra Packages for Enterprise Linux 7 - x86_64                             12,382
extras/7/x86_64                        CentOS-7 - Extras                                                                           392
filebeat/x86_64                        Filebeat for ELK clients                                                                  44
google-chrome                          google-chrome                                                                                 3
ius/x86_64                             IUS Community Packages for Enterprise Linux 7 - x86_64                     468
kibana-5.x                             Kibana repository for 5.x packages                                                 338
logstash-5.x                           Elastic repository for 5.x packages                                                 338
nux-dextop/x86_64                      Nux.Ro RPMs for general desktop use                                           2,575
updates/7/x86_64                       CentOS-7 - Updates                                                                        1,962
repolist: 28,204

برای غیرفعال کردن یک مخزن از بروزرسانی، ما در کنار دستور yum از گزینه ‘disablerepo = reponame--’ استفاده می‌کنیم.

yum --disablerepo=reponame update

از طرف دیگر، دستور ‘update’ می‌تواند قبل از ‘disablerepo = reponame’ نیز استفاده شود:

yum update -disablerepo=reponame

در مثال بالا، اگر بخواهم به روز رسانی kibana-5.x را غیرفعال کنیم، باید دستور زیر اجرا نماییم:

yum --disablerepo=kibana-5.x update

دقت کنید که برای حذف چندین مخزن در یک خط دستوری، مخازن را باید با استفاده از کاما، همانطور که در زیر نشان داده شده است جدا کنید:

yum update--disablerepo=kibana-5.x,logstash-5.x

کاری که این دستور انجام می‌دهد، این است که همه مخزن‌ها را بجز kibana-5.x به روز می‌کند.

غیرفعال کردن به روزرسانی یک مخزن با استفاده از پارامترهای enabled

به جای غیرفعال کردن به روز رسانی مخزن در دستور yum update، می‌توانید در فایل پیکربندی مخزن، پارامتر ‘enabled’ را بر روی مقدار 0 تنظیم کنید.

فایل پیکربندی مخزن همانطور که نشان داده شده است در etc/yum.repos.d/ قرار دارد:

[root@epicenter ~]# ls -l /etc/yum.repos.d/
total 84
-rw-r--r--. 1 root root 1664 Aug 30  2017 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Aug 30  2017 CentOS-CR.repo
-rw-r--r--. 1 root root  649 Aug 30  2017 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  314 Aug 30  2017 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 Aug 30  2017 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Aug 30  2017 CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 Aug 30  2017 CentOS-Vault.repo
-rw-r--r--  1 root root  390 Jan 28 20:05 decathorpe-elementary-stable-fedora-25.repo
-rw-r--r--  1 root root  391 Jan 28 21:03 decathorpe-elementary-stable.repo
-rw-r--r--  1 root root  951 Oct  2 20:44 epel.repo
-rw-r--r--  1 root root 1050 Oct  2 20:44 epel-testing.repo
-rw-r--r--. 1 root root  178 Oct  4 13:01 filebeat.repo
-rw-r--r--  1 root root  173 Jan 10 12:54 google-chrome.repo
-rw-r--r--  1 root root 1150 Feb 23  2017 ius-archive.repo
-rw-r--r--  1 root root 1131 Feb 23  2017 ius-dev.repo
-rw-r--r--  1 root root 1073 Feb 23  2017 ius.repo
-rw-r--r--  1 root root 1150 Feb 23  2017 ius-testing.repo
-rw-r--r--. 1 root root  212 Oct  3 12:05 kibana.repo
-rw-r--r--. 1 root root  216 Oct  3 14:01 logstash.repo
-rw-r--r--  1 root root  477 Jul 31  2014 nux-dextop.repo
-rw-r--r--. 1 root root  163 Oct  3 11:23 webmin.repo

برای حذف مخزن kibana-5.x، فایل پیکربندی را با استفاده از یک ویرایشگر متن باز کرده و گزینه ‘enabled’ را به صورت زیر با مقدار 0 تنظیم کنید.

vim /etc/yum.repos.d/kibana.repo

 

اگر yum repolist را اجرا کنید، مخزن در آن لیست نشان داده نمی‌شود:

repo id                                 repo name                                                                                            status
Webmin                              Webmin Distribution Neutral                                                              111
base/7/x86_64                     CentOS-7 - Base                                                                                 9,591
epel/x86_64                         Extra Packages for Enterprise Linux 7 - x86_64                                12,382
extras/7/x86_64                   CentOS-7 - Extras                                                                              392
filebeat/x86_64                    Filebeat for ELK clients                                                                     44
google-chrome                     google-chrome                                                                                    3
ius/x86_64                            IUS Community Packages for Enterprise Linux 7 - x86_64                       468
logstash-5.x                          Elastic repository for 5.x packages                                                     338
nux-dextop/x86_64              Nux.Ro RPMs for general desktop use                                               2,575
updates/7/x86_64                 CentOS-7 - Updates                                                                            1,962
repolist: 27,866

این بدان معنی است که با اجرای دستور به روزرسانی yum، هیچ بسته ای از مخزن kibana repo به روز نمی‌شود.

 

 

منبع:

linoxide