وبلاگ نت‌آرامآموزش، تجربه و راهکارهای زیرساخت

پیام kept back در آپدیت اوبونتو یعنی چه؟ تفاوت انتشار مرحله‌ای و خطای وابستگی

تشخیص علت نگه‌داشتن بسته‌ها در Ubuntu، بررسی phased updates و hold و شبیه‌سازی تغییرات وابستگی پیش از ارتقا.

انتشار:
توسط تیم فنی نت‌آرام
۷ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله پیام kept back در آپدیت اوبونتو یعنی چه؟ تفاوت انتشار مرحله‌ای و خطای وابستگی در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
سرور اوبونتو را به‌روزرسانی می‌کنید، اما APT می‌گوید چند بسته kept back یا عقب نگه داشته شده‌اند. ممکن است تصور کنید سیستم خراب شده است. گاهی این رفتار عادی و ناشی از انتشار مرحله‌ای به‌روزرسانی است؛ گاهی هم بسته عمداً hold شده، به وابستگی تازه نیاز دارد یا منبع بسته مشکل دارد.
اول باید این حالت‌ها را از هم جدا کنیم. نصب اجباری همه بسته‌ها بدون خواندن فهرست تغییرات می‌تواند باعث حذف نرم‌افزار مورد نیاز شود. در این راهنما چند دستور بی‌خطر برای تشخیص و شبیه‌سازی می‌بینید و بعد تصمیم می‌گیرید آیا باید صبر کنید یا تغییر مشخصی انجام دهید.
این آموزش برای Ubuntu و APT روی سرور است. به SSH و دسترسی sudo برای اجرای دستورهای مدیریتی نیاز دارید. example-package فقط یک نام نمونه است؛ در هر دستور نام واقعی بسته‌ای را که در خروجی سرور می‌بینید جایگزین کنید.

۱. ابتدا فهرست را تازه و نتیجه را دقیق بخوانید

کد / دستورsudo apt-get update
این دستور فهرست بسته‌ها را دریافت می‌کند؛ خود بسته‌ها را ارتقا نمی‌دهد. مطمئن شوید در انتهای خروجی هشدار مهمی درباره امضا، اتصال یا مخزن وجود ندارد. اگر فهرست یکی از مخزن‌ها دریافت نشده باشد، نتیجه بررسی بعدی می‌تواند بر اساس اطلاعات قدیمی باشد.
برای دیدن بسته‌هایی که نسخه قابل ارتقا دارند:
کد / دستورapt list --upgradable
بعد ارتقای معمول را بدون اعمال تغییر شبیه‌سازی کنید:
کد / دستورsudo apt-get -s upgrade
گزینه -s فقط پیش‌نمایش است. نام بسته‌هایی را که نصب یا نگه داشته می‌شوند و خلاصه تعداد تغییرات را یادداشت کنید. قالب پیام در نسخه‌های مختلف APT فرق دارد؛ نسخه‌های جدیدتر ممکن است بسته‌های تأخیرخورده به دلیل phasing را در بخش جداگانه نشان دهند.

۲. انتشار مرحله‌ای چیست؟

Ubuntu بعضی به‌روزرسانی‌های معمول را ابتدا در اختیار بخشی از سیستم‌ها می‌گذارد و در صورت مناسب بودن شرایط، دامنه انتشار را بیشتر می‌کند. این کار احتمال رسیدن سریع یک ایراد جدید به همه سرورها را کاهش می‌دهد. ممکن است یک سرور نسخه جدید را امروز بگیرد و سرور دیگر همان نسخه را کمی بعد دریافت کند.
برای دیدن سیاست یک بسته:
کد / دستورapt-cache policy example-package
قسمت Installed نسخه نصب‌شده و Candidate نسخه پیشنهادی APT را نشان می‌دهد. در جدول نسخه‌ها ممکن است عبارتی مثل phased 30% دیده شود؛ یعنی آن نسخه در مرحله‌ای از انتشار قرار دارد، نه اینکه فقط ۳۰ درصد از فایل دانلود شده است. عدد، بسته و زمان در هر سرور متفاوت‌اند. کنار هم گذاشتن خروجی policy و پیش‌نمایش upgrade کمک می‌کند بفهمید آیا این بسته برای این سیستم هنوز عقب نگه داشته شده است.
در برخی وضعیت‌ها نسخه مرحله‌ای با اولویت پایین نمایش داده می‌شود؛ اما اولویت پایین می‌تواند به تنظیمات دیگری هم مربوط باشد. فقط با دیدن یک درصد یا عدد، علت را قطعی اعلام نکنید. اگر APT صراحتاً می‌گوید تأخیر به خاطر phasing است و مخزن و وابستگی‌ها سالم‌اند، معمولاً لازم نیست کاری را اجبار کنید. بعداً sudo apt-get update و پیش‌نمایش upgrade را دوباره اجرا کنید. اگر انتشار به علت گزارش مشکل متوقف شود، زمان آماده‌شدن ثابت نیست.
طبق توضیح Ubuntu، به‌روزرسانی‌های امنیتی خود آن معمولاً به این روش مرحله‌بندی نمی‌شوند. با این حال یک بسته امنیتی ممکن است به علت hold، وابستگی، مخزن ناسالم یا تنظیمات دیگر نصب نشود؛ بنابراین هر kept back را بی‌ضرر فرض نکنید.

۳. آیا بسته عمداً hold شده است؟

کد / دستورapt-mark showhold
اگر نام بسته در خروجی است، کسی یا ابزار مدیریتی آن را در وضعیت hold قرار داده است. این دستور فقط وضعیت را می‌خواند. ممکن است hold برای جلوگیری از ناسازگاری برنامه مهمی گذاشته شده باشد؛ مسئول سرور و تاریخچه تغییر را بررسی کنید.
اگر مالک سرویس تأیید می‌کند دلیل hold برطرف شده و ارتقا آزمایش شده است، می‌توانید برای همان بسته:
کد / دستورsudo apt-mark unhold example-package
سپس دوباره apt-mark showhold و sudo apt-get -s upgrade را اجرا کنید. این دستور نسخه تازه را نصب نمی‌کند؛ فقط محدودیت hold همان بسته را برمی‌دارد. اگر دلیل hold را نمی‌دانید، آن را برندارید، به‌خصوص اگر سرویس به نسخه خاصی وابسته است.

۴. آیا ارتقا به بسته جدید یا حذف بسته دیگر نیاز دارد؟

ممکن است بسته در hold نباشد و phasing هم علت روشن نباشد. پیش‌نمایش نصب همان بسته را ببینید:
کد / دستورsudo apt-get -s install example-package
به خلاصه و خط‌های Inst، Conf، Remv یا Purg توجه کنید. Inst می‌تواند نصب یا ارتقای بسته را نشان دهد و Remv و Purg به حذف مربوط‌اند. اگر بسته تازه‌ای لازم است، نام و کارکرد آن را بخوانید. اگر APT پیشنهاد حذف دیتابیس، وب‌سرور، بسته بوت یا هر جزء ناشناخته دیگری را می‌دهد، عملیات واقعی را شروع نکنید.
ارتقای گسترده‌تر را هم می‌توان فقط شبیه‌سازی کرد:
کد / دستورsudo apt-get -s dist-upgrade
dist-upgrade نام گمراه‌کننده‌ای دارد: در همین نسخه Ubuntu می‌تواند وابستگی‌های جدید نصب کند و برای حل وابستگی، بسته‌هایی را حذف کند؛ این دستور به‌تنهایی دستور ارتقای نسخه اصلی Ubuntu نیست. حتی در حالت شبیه‌سازی همه فهرست را بخوانید. تفاوت آن با پیش‌نمایش upgrade سرنخی برای وابستگی‌هاست، اما به‌تنهایی مجوز اجرای آن در سرور تولیدی نیست.
اگر بعد از بررسی و آزمایش، نصب یک بسته مشخص و همه تغییرات پیشنهادی آن واقعاً مورد تأیید شماست، در بازه نگهداری می‌توانید نسخه واقعی را اجرا کنید:
کد / دستورsudo apt-get install example-package
APT پیش از ادامه فهرست تغییرات را نشان می‌دهد؛ آن را دوباره بخوانید و در صورت حذف نامنتظره با n انصراف دهید. نصب مستقیم ممکن است انتشار مرحله‌ای را دور بزند. برای بسته‌ای که فقط به خاطر phasing عقب مانده، مستند Ubuntu معمولاً صبر کردن را توصیه می‌کند.

۵. مخزن، pin یا بسته ناقص را بررسی کنید

اگر Candidate نسخه مورد انتظار نیست یا هیچ نسخه‌ای پیدا نمی‌شود، آدرس و نسخه توزیع مخزن را از apt-cache policy بخوانید. ممکن است تنظیم اولویت یا pin، مخزن شخص ثالث، یا فهرست قدیمی باعث انتخاب نسخه دیگری شده باشد. مخزن نامطمئن را صرفاً برای گرفتن نسخه جدید اضافه نکنید.
برای بررسی بسته‌های نیمه‌تمام:
کد / دستورsudo dpkg --audit
اگر نام بسته‌ای را گزارش کرد، علت خطا و فضای دیسک را بخوانید. مثلاً برای خطای پر بودن بخش بوت، راهنمای پر شدن boot در Ubuntu مراحل جداگانه دارد. اگر وابستگی خراب گزارش می‌شود، قبل از ترمیم واقعی پیش‌نمایش بگیرید:
کد / دستورsudo apt-get -s -f install
اگر پیشنهاد شامل حذف یا جایگزینی نامنتظره است، ابتدا علت را بفهمید. دستورات حذف گسترده یا پاک کردن همه فهرست‌های بسته را بدون تشخیص اجرا نکنید.

۶. اگر به‌روزرسانی امنیتی مهم است

نام و نسخه بسته را با اطلاعیه رسمی همان نرم‌افزار و Ubuntu تطبیق دهید. خروجی زیر نشان می‌دهد نسخه‌ها از کدام منبع و با چه اولویتی دیده می‌شوند:
کد / دستورapt-cache policy example-package
وجود عبارت security در منبع یکی از سرنخ‌هاست، اما از روی آن به‌تنهایی نمی‌توان گفت همه آسیب‌پذیری‌ها رفع شده‌اند. نسخه نصب‌شده، توضیح وصله و وضعیت پشتیبانی نسخه Ubuntu را نیز بررسی کنید. اگر hold یا مشکل مخزن جلوی وصله ضروری را گرفته است، پس از پشتیبان و پیش‌نمایش تغییرات، همان مانع را با روش مناسب برطرف کنید.
اگر تصمیم دارید ارتقا را اکنون انجام دهید، ابتدا فضای سرور و زمان مجاز را بررسی کنید:
کد / دستورdf -h /
پس از به‌روزرسانی موفق، خروجی apt list --upgradable و سیاست همان بسته را دوباره ببینید. اگر ارتقای کرنل یا برخی بسته‌ها به راه‌اندازی مجدد نیاز دارد، پس از اطمینان از دسترسی کنسول و در زمان مناسب آن را برنامه‌ریزی کنید؛ فایل /run/reboot-required در بعضی نصب‌های Ubuntu این نیاز را نشان می‌دهد، اما نبودن آن ارزیابی همه برنامه‌ها را جایگزین نمی‌کند.
این بررسی‌ها برای Ubuntu روی سرور مجازی ایران و سرور اختصاصی ایران یکسان‌اند. توضیح رسمی انتشار مرحله‌ای و خطر نصب اجباری در راهنمای Ubuntu Server آمده است.
اشتراک‌گذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.

دیدگاه‌ها (۰)

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام