در دنیای مدیریت سرور، همیشه به‌روز بودن خوب نیست! گاهی اوقات یک آپدیت ناخواسته می‌تواند تمام تنظیمات شما را به هم بریزد. جلوگیری از آپدیت شدن پکیج در CentOS یکی از مهارت‌های حیاتی برای مدیران سرور است که پایداری سرویس‌ها را تضمین می‌کند. اگر شما مسئول نگهداری یک سرور هستید، حتماً می‌دانید که تغییر ناگهانی نسخه PHP یا دیتابیس می‌تواند باعث دان شدن سایت شود.

💡 جلوگیری از آپدیت پکیج (Version Locking) = ثابت نگه داشتن نسخه یک نرم‌افزار خاص در حالی که سایر بخش‌های سیستم‌عامل به‌روز می‌شوند. با این کار امنیت سیستم‌عامل حفظ می‌شود، اما پایداری نرم‌افزارهای حساس به خطر نمی‌افتد.

💡 نکته مهم: این آموزش برای نسخه‌های CentOS 7 (EOL: ژوئن 2024)، و جایگزین‌های آن مانند AlmaLinux و Rocky Linux کاربرد دارد.

اگر با REPOها و مخازن سرورهای مبتنی بر لینوکس زیاد کار می‌کنید، احتمالاً بارها با چالش آپدیت شدن اجباری پکیج‌ها بعد از اجرای دستور yum update مواجه شده‌اید. راه حل کلاسیک این مشکل این است که برنامه مورد نظر را در تنظیمات فایل yum اصطلاحاً Exclude کنید؛ اما آیا این تنها راه است؟ ما در این مقاله به زبان ساده و کاملاً عملی، تمام روش‌های کلاسیک و مدرن قفل کردن پکیج‌ها را بررسی می‌کنیم. با خرید انواع سرورهای مجازی در وب داده، همواره به آخرین توزیع های لینوکس و انواع سیستم عامل ها دسترسی خواهید داشت.

جلوگیری از آپدیت شدن پکیج در CentOS

دلایل جلوگیری از آپدیت شدن پکیج در 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 ➡️ ❌ خطای عدم اتصال به دیتابیس
🔸 نکته فنی: در سرورهای پروداکشن (Production)، هیچ پکیجی نباید بدون تست قبلی در محیط Staging آپدیت شود.

آموزش جلوگیری از آپدیت خودکار پکیج‌ در 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 7: پایان عمر در 30 ژوئن 2024
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-versionlockpython3-dnf-plugin-versionlock
دستور فراخوانیyum versionlockdnf versionlock
سرعت پردازشمعمولیبسیار سریع‌تر (بهینه شده)

سناریوهای رایج غیرفعال کردن بروزرسانی یک سرویس خاص در CentOS

در مدیریت سرور مجازی، سوالات زیادی برای کاربران پیش می‌آید. بیایید چند مورد از مهم‌ترین آن‌ها که باعث جستجوی عباراتی مثل تغییر مجوز در لینوکس یا مشکلات دیتابیس می‌شوند را بررسی کنیم.

1- چگونه از آپدیت خودکار کرنل سرور جلوگیری کنیم؟

کرنل قلب لینوکس است. در توزیع‌های جدید مثل Rocky Linux، آپدیت کرنل معمولاً بی خطر است اما گاهی باعث می‌شود برخی ماژول‌های خاص یا درایورهای اختصاصی کار نکنند. برای اطمینان، پکیج kernel* را به لیست exclude فایل yum.conf اضافه کنید.

📌نکته: اگر کرنل را آپدیت کردید و سرور بوت نشد، باید از طریق کنسول VNC وارد شوید و با کرنل قدیمی بوت کنید.

2- تغییر ندادن نسخه PHP یا MySQL هنگام آپدیت سرور

این مورد برای وب‌سایت‌های وردپرسی حیاتی است. تغییر ناگهانی نسخه MySQL می‌تواند باعث ناسازگاری جداول و در نهایت خطای اتصال به پایگاه داده شود. بهترین روش برای دیتابیس‌ها، استفاده از versionlock است تا مطمئن شوید حتی با دستور update all هم نسخه دیتابیس تکان نمی‌خورد.

3- روش غیرفعال کردن بروزرسانی یک سرویس خاص در سرور مجازی

اگر از کنترل پنل‌هایی مثل سی‌پنل یا دایرکت‌ادمین استفاده می‌کنید، معمولاً آن‌ها مکانیزم داخلی خودشان را دارند (مثل CustomBuild در دایرکت‌ادمین). اما اگر سرور خام دارید، روش‌های بالا (yum.conf) بهترین گزینه هستند.

svgexport 58 جلوگیری کردن از آپدیت شدن یک پکیج خاص در CentOS، AlmaLinux و Rocky Linuxسرور مجازی وب داده
VPS وب داده با حضور قدرتمند در بیش از 9 لوکیشن استراتژیک در سراسر جهان…
برای مشاهده موقعیت‌های
سرور های مجازی وب‌داده
روی دکمه زیر کلیک کنید

نتیجه‌گیری؛ جلوگیری از آپدیت شدن پکیج در CentOS

در این مقاله از بلاگ وب‌داده، یاد گرفتیم که جلوگیری از آپدیت پکیج در CentOS یک انتخاب اختیاری نیست، بلکه یک استراتژی الزامی برای پایداری سرورهای عملیاتی است. ما با سه روش (خط فرمان، فایل کانفیگ و پلاگین versionlock) در توزیع‌های CentOS، AlmaLinux و Rocky آشنا شدیم.

مدیریت سرور مثل رانندگی است؛ شما باید کنترل فرمان (آپدیت‌ها) را در دست داشته باشید، نه اینکه اجازه دهید ماشین هر کجا که می‌خواهد برود. امیدوارم این مقاله برای شما مفید بوده باشد. در صورتی که سوالی داشتید یا تجربه‌ای در زمینه مشکلات ناشی از آپدیت خودکار دارید، می‌توانید در بخش دیدگاه با ما در ارتباط باشید.

سوالات متداول درباره آپدیت پکیج لینوکس

آیا جلوگیری از آپدیت پکیج باعث کاهش امنیت سرور می‌شود؟

خیر، اگر هوشمندانه انجام شود. شما باید آپدیت‌های امنیتی (Security Patches) را دریافت کنید اما جلوی تغییر نسخه اصلی (Major Version) نرم‌افزارهای حساس را بگیرید.

سارا صالحی ریحانی
سارا صالحی ریحانی

کارشناس IT، وردپرس و کپی‌رایتر حوزه هاستینگ. پس از سال‌ها تجربه در شبکه، به دنیای کلمات و تولید محتوا وارد شدم و حالا در تیم وب‌داده، مفاهیم پیچیده هاست و سرور را به زبانی ساده و کاربردی برای علاقه‌مندان به دنیای شبکه می‌نویسم.

مقاله‌ها: 131
پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *