
به اشتراک بگذارید
در دنیای مدیریت سرور، همیشه بهروز بودن خوب نیست! گاهی اوقات یک آپدیت ناخواسته میتواند تمام تنظیمات شما را به هم بریزد. جلوگیری از آپدیت شدن پکیج در CentOS یکی از مهارتهای حیاتی برای مدیران سرور است که پایداری سرویسها را تضمین میکند. اگر شما مسئول نگهداری یک سرور هستید، حتماً میدانید که تغییر ناگهانی نسخه PHP یا دیتابیس میتواند باعث دان شدن سایت شود.
💡 جلوگیری از آپدیت پکیج (Version Locking) = ثابت نگه داشتن نسخه یک نرمافزار خاص در حالی که سایر بخشهای سیستمعامل بهروز میشوند. با این کار امنیت سیستمعامل حفظ میشود، اما پایداری نرمافزارهای حساس به خطر نمیافتد.
اگر با REPOها و مخازن سرورهای مبتنی بر لینوکس زیاد کار میکنید، احتمالاً بارها با چالش آپدیت شدن اجباری پکیجها بعد از اجرای دستور yum update مواجه شدهاید. راه حل کلاسیک این مشکل این است که برنامه مورد نظر را در تنظیمات فایل yum اصطلاحاً Exclude کنید؛ اما آیا این تنها راه است؟ ما در این مقاله به زبان ساده و کاملاً عملی، تمام روشهای کلاسیک و مدرن قفل کردن پکیجها را بررسی میکنیم. با خرید انواع سرورهای مجازی در وب داده، همواره به آخرین توزیع های لینوکس و انواع سیستم عامل ها دسترسی خواهید داشت.
آنچه در این مقاله میخوانید:

دلایل جلوگیری از آپدیت شدن پکیج در CentOS
شاید بپرسید چرا وقتی همه توصیه به آپدیت بودن میکنند، ما باید به دنبال قفل کردن نسخه نرم افزار در لینوکس باشیم؟ پاسخ ساده است: پایداری (Stability).
در سیستمعاملهای توزیع شده مثل CentOS، نرمافزارها وابستگیهای زیادی به هم دارند. تصور کنید شما یک اسکریپت وب دارید که فقط با PHP 7.4 کار میکند، اما یک دستور yum update ساده، نسخه PHP شما را به 8.2 ارتقا میدهد. نتیجه؟ سایت از دسترس خارج میشود و شما با ارور دیتابیس وردپرس یا خطاهای سینتکسی مواجه میشوید.
دلایل اصلی استفاده از این تکنیک عبارتند از:
- جلوگیری از Dependency Hell: ناهماهنگی بین کتابخانههای مورد نیاز نرمافزار.
- حفظ کانفیگهای سفارشی: گاهی آپدیتها فایلهای کانفیگ را بازنویسی میکنند و شما مجبور به تغییر سطح دسترسی فایل در لینوکس یا تنظیم مجدد میشوید.
- پایداری سرویسهای حیاتی: مثل دیتابیسها که آپدیت آنها نیازمند بکآپ و برنامه دقیق است.
نمودار زیر نشان میدهد چطور یک آپدیت میتواند زنجیره را قطع کند:
Server OS (CentOS)
⬇️
Package Manager (Yum/DNF)
⬇️
🛑 Update Triggered!
├─ Kernel (OK to update)
├─ Security Patches (OK to update)
└─ ⚠️ MySQL / PHP (CRITICAL: Do NOT Update!)
⬇️
If Updated ➡️ ❌ خطای عدم اتصال به دیتابیس
آموزش جلوگیری از آپدیت خودکار پکیج در CentOS
در ادامه، 3 روش اصلی برای جلوگیری از آپدیت پکیجها را بررسی میکنیم که از راهکارهای موقت خط فرمان تا تنظیمات دائمی سیستمی را پوشش میدهند. این دستورات کاملاً استاندارد بوده و روی تمام توزیعهای خانواده RHEL (شامل CentOS، AlmaLinux و Rocky Linux) بدون مشکل اجرا میشوند.
1- روش موقت: استفاده از دستور Exclude در YUM
اگر قصد دارید همین الان سیستم را آپدیت کنید اما نمیخواهید یک پکیج خاص تغییر کند، نیازی به تغییر فایلهای کانفیگ نیست. دستور Exclude در Yum بهترین گزینه برای این کار است.
برای این کار کافیست از سوئیچ x- یا exclude-- استفاده کنید مانند زیر:
# در CentOS 7 (Yum):
yum update --exclude=httpd
# در AlmaLinux/Rocky/CentOS 8+ (DNF):
dnf update --exclude=httpd در این دستور، سیستم تمام پکیجها را آپدیت میکند، اما کاری به httpd و تمام پکیجهایی که با php شروع میشوند ندارد. این روش برای تست سریع عالی است اما برای طولانی مدت توصیه نمیشود چون ممکن است دفعه بعد فراموش کنید این سوئیچ را بزنید.
2- روش دائمی: مدیریت فایل کانفیگ (Yum.conf یا DNF.conf)
برای اینکه تنظیمات شما ماندگار شود و هر بار نیاز به تایپ دستورات طولانی نداشته باشید، باید فایل کانفیگ اصلی را ویرایش کنیم. این فایل، تنظیمات اصلی مدیر بسته Yum را در خود نگه میدارد.
گام اول: فایل کانفیگ را بسته به سیستم عامل خود باز کنید.
- برای CentOS 7: فایل
etc/yum.conf/ - برای AlmaLinux/Rocky/CentOS 8-9: فایل
etc/dnf/dnf.conf/
nano /etc/yum.conf گام دوم: بخش [main] را پیدا کنید و دستور exclude را به انتهای آن اضافه کنید:
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
...
# خط زیر را اضافه کنید
exclude=httpd php* mysql* kernel* گام سوم: فایل را ذخیره کنید (Ctrl+O) و خارج شوید.
حالا هر زمان که دستور yum update را بزنید، سیستم به صورت خودکار پکیجهای لیست شده را نادیده میگیرد. این روش یکی از مطمئنترین راهها برای جلوگیری از بروز مشکل اتصال به دیتابیس ناشی از تغییر نسخه ناگهانی است.
3- روش حرفهای: آموزش افزونه Versionlock
اگر به دنبال راهکاری تمیزتر و منعطفتر هستید، پلاگین versionlock بهترین گزینه است. این پلاگین به شما اجازه میدهد نسخههای فعلی نصب شده را “قفل” کنید، به طوری که حتی اگر پکیج را دستی هم بخواهید آپدیت کنید، سیستم اجازه ندهد (مگر اینکه قفل را باز کنید). برای این کار مراحل زیر را انجام دهید:
الف) نصب پلاگین: برای جلوگیری از آپدیت پکیج در CentOS توزیع های (7 , 8 و 9) ، آلما لینوکس یا راکی لینوکس می توانید از دستور زیر استفاده کنید.
# در CentOS 7:
yum install yum-plugin-versionlock
# در AlmaLinux / Rocky / CentOS 8 :
dnf install 'dnf-command(versionlock)' ب) قفل کردن پکیج: برای قفل کردن یک پکیج (مثلاً kernel) جهت جلوگیری از آپدیت پکیج در CentOS یا آلمالینوکس و راکی لینوکس، دستور زیر را وارد کنید:
# CentOS 7
yum versionlock add kernel
# AlmaLinux / Rocky
dnf versionlock add kernel ج) مدیریت قفلها:
# مشاهده لیست قفلها
yum versionlock list # CentOS 7
dnf versionlock list # AlmaLinux/Rocky
# حذف قفل
yum versionlock delete kernel # CentOS 7
dnf versionlock delete kernel # AlmaLinux/Rocky
# پاکسازی همه قفلها
yum versionlock clear # CentOS 7
dnf versionlock clear # AlmaLinux/Rocky نمودار سناریوی استفاده از Versionlock:
Server
1🖥️ [Kernel] ──🔒 Locked (Safe)
2🗄️ [MySQL] ──🔒 Locked (Stable)
3💾 [Other] ──🔓 Updates Allowed
تفاوت YUM و DNF در نسخههای جدید CentOS
دانستن تفاوت YUM و DNF در مدیریت آپدیت برای مدیران سرور ضروری است. اگرچه اکثر دستورات yum در dnf هم کار میکنند (چون dnf معمولاً alias شده است)، اما ساختار پلاگینها کمی متفاوت است.
⚠️ توجه: اگر هنوز از CentOS 7 یا 8 استفاده میکنید، به شدت توصیه میشود به جایگزینهایی مانند موارد زیر مهاجرت کنید، چون دیگر آپدیتهای امنیتی رسمی دریافت نمیکنید:
- AlmaLinux: کاملاً سازگار با RHEL، رایگان و پشتیبانی طولانیمدت
- Rocky Linux: ساخته شده توسط بنیانگذار اصلی CentOS
- RHEL: اگر نیاز به پشتیبانی تجاری دارید
خبر خوب: تمام دستورات
yumوdnfوversionlockکه در این مقاله آموزش داده شده، روی AlmaLinux و Rocky Linux دقیقاً به همین صورت کار میکنند.
CentOS Linux 8: پایان عمر در 31 دسامبر 2021
CentOS Linux 9: هرگز منتشر نشد اما CentOS Stream 9 فعال است.
جدول مقایسه سریع دستورات:
| ویژگی | CentOS 7 (Yum) | AlmaLinux / Rocky (DNF) |
|---|---|---|
| فایل کانفیگ | /etc/yum.conf | /etc/dnf/dnf.conf |
| نصب پلاگین قفل | yum-plugin-versionlock | python3-dnf-plugin-versionlock |
| دستور فراخوانی | yum versionlock | dnf versionlock |
| سرعت پردازش | معمولی | بسیار سریعتر (بهینه شده) |
سناریوهای رایج غیرفعال کردن بروزرسانی یک سرویس خاص در CentOS
در مدیریت سرور مجازی، سوالات زیادی برای کاربران پیش میآید. بیایید چند مورد از مهمترین آنها که باعث جستجوی عباراتی مثل تغییر مجوز در لینوکس یا مشکلات دیتابیس میشوند را بررسی کنیم.
1- چگونه از آپدیت خودکار کرنل سرور جلوگیری کنیم؟
کرنل قلب لینوکس است. در توزیعهای جدید مثل Rocky Linux، آپدیت کرنل معمولاً بی خطر است اما گاهی باعث میشود برخی ماژولهای خاص یا درایورهای اختصاصی کار نکنند. برای اطمینان، پکیج kernel* را به لیست exclude فایل yum.conf اضافه کنید.
2- تغییر ندادن نسخه PHP یا MySQL هنگام آپدیت سرور
این مورد برای وبسایتهای وردپرسی حیاتی است. تغییر ناگهانی نسخه MySQL میتواند باعث ناسازگاری جداول و در نهایت خطای اتصال به پایگاه داده شود. بهترین روش برای دیتابیسها، استفاده از versionlock است تا مطمئن شوید حتی با دستور update all هم نسخه دیتابیس تکان نمیخورد.
3- روش غیرفعال کردن بروزرسانی یک سرویس خاص در سرور مجازی
اگر از کنترل پنلهایی مثل سیپنل یا دایرکتادمین استفاده میکنید، معمولاً آنها مکانیزم داخلی خودشان را دارند (مثل CustomBuild در دایرکتادمین). اما اگر سرور خام دارید، روشهای بالا (yum.conf) بهترین گزینه هستند.
سرور های مجازی وبداده
روی دکمه زیر کلیک کنید
نتیجهگیری؛ جلوگیری از آپدیت شدن پکیج در CentOS
در این مقاله از بلاگ وبداده، یاد گرفتیم که جلوگیری از آپدیت پکیج در CentOS یک انتخاب اختیاری نیست، بلکه یک استراتژی الزامی برای پایداری سرورهای عملیاتی است. ما با سه روش (خط فرمان، فایل کانفیگ و پلاگین versionlock) در توزیعهای CentOS، AlmaLinux و Rocky آشنا شدیم.
مدیریت سرور مثل رانندگی است؛ شما باید کنترل فرمان (آپدیتها) را در دست داشته باشید، نه اینکه اجازه دهید ماشین هر کجا که میخواهد برود. امیدوارم این مقاله برای شما مفید بوده باشد. در صورتی که سوالی داشتید یا تجربهای در زمینه مشکلات ناشی از آپدیت خودکار دارید، میتوانید در بخش دیدگاه با ما در ارتباط باشید.
سوالات متداول درباره آپدیت پکیج لینوکس
آیا جلوگیری از آپدیت پکیج باعث کاهش امنیت سرور میشود؟
خیر، اگر هوشمندانه انجام شود. شما باید آپدیتهای امنیتی (Security Patches) را دریافت کنید اما جلوی تغییر نسخه اصلی (Major Version) نرمافزارهای حساس را بگیرید.
اگر پکیجی را قفل کنم، چطور میتوانم بعداً آن را آپدیت کنم؟
کافیست موقتاً قفل را غیرفعال کنید یا با دستور yum versionlock delete [package_name] آن را از لیست سیاه خارج کنید، آپدیت کنید و دوباره قفل کنید.
تفاوت exclude در yum.conf با پلاگین versionlock چیست؟
دستور exclude در فایل کانفیگ کلیتر است و معمولاً بر اساس نام پکیج کار میکند (مثلاً همه چیزهایی که با php شروع میشوند). اما versionlock دقیقتر است و میتواند یک نسخه خاص (مثلاً mysql-5.7.33) را قفل کند.
بعد از آپدیت MySQL با خطای عدم اتصال به دیتابیس مواجه شدم، چه کنم؟
این مشکل معمولاً به دلیل تغییر تنظیمات یا ناسازگاری نسخه جدید است. ابتدا لاگها را بررسی کنید. اگر مشکل حل نشد، ممکن است نیاز به دانگرید (Downgrade) داشته باشید که فرآیند حساسی است. پیشگیری با روشهای این مقاله بهتر از درمان است!
آیا این روشها برای دبیان یا اوبونتو هم کاربرد دارد؟
خیر، این مقاله مخصوص توزیعهای مبتنی بر RedHat (مثل CentOS, AlmaLinux) است. در اوبونتو از دستور apt-mark hold استفاده میشود.




