در این مقاله به شما نشان خواهیم داد؛ که چگونه در هنگام آپدیت سیستمعامل با استفاده از دستور 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 به روز نمیشود.
منبع:
0 دیدگاه
نوشتن دیدگاه