
به اشتراک بگذارید

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

شاید بپرسید چرا وقتی همه توصیه به آپدیت بودن میکنند، ما باید به دنبال قفل کردن نسخه نرم افزار در لینوکس باشیم؟ پاسخ ساده است: پایداری (Stability).
در سیستمعاملهای توزیع شده مثل CentOS، نرمافزارها وابستگیهای زیادی به هم دارند. تصور کنید شما یک اسکریپت وب دارید که فقط با PHP 7.4 کار میکند، اما یک دستور yum update ساده، نسخه PHP شما را به 8.2 ارتقا میدهد. نتیجه؟ سایت از دسترس خارج میشود و شما با ارور دیتابیس وردپرس یا خطاهای سینتکسی مواجه میشوید.
دلایل اصلی استفاده از این تکنیک عبارتند از:
نمودار زیر نشان میدهد چطور یک آپدیت میتواند زنجیره را قطع کند:
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 ➡️ ❌ خطای عدم اتصال به دیتابیس
در ادامه، 3 روش اصلی برای جلوگیری از آپدیت پکیجها را بررسی میکنیم که از راهکارهای موقت خط فرمان تا تنظیمات دائمی سیستمی را پوشش میدهند. این دستورات کاملاً استاندارد بوده و روی تمام توزیعهای خانواده RHEL (شامل CentOS، AlmaLinux و Rocky Linux) بدون مشکل اجرا میشوند.
اگر قصد دارید همین الان سیستم را آپدیت کنید اما نمیخواهید یک پکیج خاص تغییر کند، نیازی به تغییر فایلهای کانفیگ نیست. دستور Exclude در Yum بهترین گزینه برای این کار است.
برای این کار کافیست از سوئیچ x- یا exclude-- استفاده کنید مانند زیر:
# در CentOS 7 (Yum):
yum update --exclude=httpd
# در AlmaLinux/Rocky/CentOS 8+ (DNF):
dnf update --exclude=httpd در این دستور، سیستم تمام پکیجها را آپدیت میکند، اما کاری به httpd و تمام پکیجهایی که با php شروع میشوند ندارد. این روش برای تست سریع عالی است اما برای طولانی مدت توصیه نمیشود چون ممکن است دفعه بعد فراموش کنید این سوئیچ را بزنید.
برای اینکه تنظیمات شما ماندگار شود و هر بار نیاز به تایپ دستورات طولانی نداشته باشید، باید فایل کانفیگ اصلی را ویرایش کنیم. این فایل، تنظیمات اصلی مدیر بسته Yum را در خود نگه میدارد.
گام اول: فایل کانفیگ را بسته به سیستم عامل خود باز کنید.
etc/yum.conf/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 را بزنید، سیستم به صورت خودکار پکیجهای لیست شده را نادیده میگیرد. این روش یکی از مطمئنترین راهها برای جلوگیری از بروز مشکل اتصال به دیتابیس ناشی از تغییر نسخه ناگهانی است.
اگر به دنبال راهکاری تمیزتر و منعطفتر هستید، پلاگین 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 در مدیریت آپدیت برای مدیران سرور ضروری است. اگرچه اکثر دستورات yum در dnf هم کار میکنند (چون dnf معمولاً alias شده است)، اما ساختار پلاگینها کمی متفاوت است.
⚠️ توجه: اگر هنوز از CentOS 7 یا 8 استفاده میکنید، به شدت توصیه میشود به جایگزینهایی مانند موارد زیر مهاجرت کنید، چون دیگر آپدیتهای امنیتی رسمی دریافت نمیکنید:
- AlmaLinux: کاملاً سازگار با RHEL، رایگان و پشتیبانی طولانیمدت
- Rocky Linux: ساخته شده توسط بنیانگذار اصلی CentOS
- RHEL: اگر نیاز به پشتیبانی تجاری دارید
خبر خوب: تمام دستورات
yumوdnfوversionlockکه در این مقاله آموزش داده شده، روی AlmaLinux و Rocky Linux دقیقاً به همین صورت کار میکنند.
جدول مقایسه سریع دستورات:
| ویژگی | CentOS 7 (Yum) | AlmaLinux / Rocky (DNF) |
|---|---|---|
| فایل کانفیگ | /etc/yum.conf | /etc/dnf/dnf.conf |
| نصب پلاگین قفل | yum-plugin-versionlock | python3-dnf-plugin-versionlock |
| دستور فراخوانی | yum versionlock | dnf versionlock |
| سرعت پردازش | معمولی | بسیار سریعتر (بهینه شده) |
در مدیریت سرور مجازی، سوالات زیادی برای کاربران پیش میآید. بیایید چند مورد از مهمترین آنها که باعث جستجوی عباراتی مثل تغییر مجوز در لینوکس یا مشکلات دیتابیس میشوند را بررسی کنیم.
کرنل قلب لینوکس است. در توزیعهای جدید مثل Rocky Linux، آپدیت کرنل معمولاً بی خطر است اما گاهی باعث میشود برخی ماژولهای خاص یا درایورهای اختصاصی کار نکنند. برای اطمینان، پکیج kernel* را به لیست exclude فایل yum.conf اضافه کنید.
این مورد برای وبسایتهای وردپرسی حیاتی است. تغییر ناگهانی نسخه MySQL میتواند باعث ناسازگاری جداول و در نهایت خطای اتصال به پایگاه داده شود. بهترین روش برای دیتابیسها، استفاده از versionlock است تا مطمئن شوید حتی با دستور update all هم نسخه دیتابیس تکان نمیخورد.
اگر از کنترل پنلهایی مثل سیپنل یا دایرکتادمین استفاده میکنید، معمولاً آنها مکانیزم داخلی خودشان را دارند (مثل CustomBuild در دایرکتادمین). اما اگر سرور خام دارید، روشهای بالا (yum.conf) بهترین گزینه هستند.
در این مقاله از بلاگ وبداده، یاد گرفتیم که جلوگیری از آپدیت پکیج در CentOS یک انتخاب اختیاری نیست، بلکه یک استراتژی الزامی برای پایداری سرورهای عملیاتی است. ما با سه روش (خط فرمان، فایل کانفیگ و پلاگین versionlock) در توزیعهای CentOS، AlmaLinux و Rocky آشنا شدیم.
مدیریت سرور مثل رانندگی است؛ شما باید کنترل فرمان (آپدیتها) را در دست داشته باشید، نه اینکه اجازه دهید ماشین هر کجا که میخواهد برود. امیدوارم این مقاله برای شما مفید بوده باشد. در صورتی که سوالی داشتید یا تجربهای در زمینه مشکلات ناشی از آپدیت خودکار دارید، میتوانید در بخش دیدگاه با ما در ارتباط باشید.
خیر، اگر هوشمندانه انجام شود. شما باید آپدیتهای امنیتی (Security Patches) را دریافت کنید اما جلوی تغییر نسخه اصلی (Major Version) نرمافزارهای حساس را بگیرید.