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

رفع خطای Release file is not valid yet در apt؛ ساعت سرور را درست کنید

آموزش بررسی ساعت UTC، وضعیت NTP و علت خطای تاریخ آینده مخزن APT بدون غیرفعال‌کردن بررسی امنیتی.

انتشار:
توسط تیم فنی نت‌آرام
۷ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله رفع خطای Release file is not valid yet در apt؛ ساعت سرور را درست کنید در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
دستور apt update را اجرا می‌کنید و اوبونتو می‌گوید فایل مخزن «هنوز معتبر نیست»: Release file is not valid yet. گاهی پیام مدت باقی‌مانده، مثلاً چند ساعت یا چند روز، را هم نشان می‌دهد. یکی از علت‌های رایج این است که ساعت واقعی سرور عقب مانده و تاریخ امضاشده مخزن از نگاه سرور در آینده قرار گرفته است. در نتیجه فهرست بسته‌های آن مخزن به‌روز نمی‌شود.
در این آموزش ساعت واقعی را از منطقه زمانی نمایش جدا می‌کنیم، سرویس همگام‌سازی زمان را پیدا می‌کنیم و در صورت درست‌بودن ساعت، خود مخزن را بررسی می‌کنیم. مثال‌ها برای اوبونتو یا Debian دارای systemd روی سرور مجازی ایران و سرور اختصاصی ایران هستند. به SSH و در بعضی مراحل sudo نیاز دارید. تغییر ناگهانی ساعت می‌تواند روی لاگ، زمان‌بندی، گواهی و برنامه‌های حساس اثر بگذارد؛ روی سرور عملیاتی اول اثر تغییر را بشناسید.

۱. خطای دقیق و مخزن مربوط را یادداشت کنید

کد / دستورsudo apt update
آدرس مخزنی را که پس از عبارت Release file for آمده و مدت درج‌شده پس از invalid for another یادداشت کنید. اگر چند مخزن مستقل همین خطا را می‌دهند، ساعت سیستم مشکوک‌تر است. اگر فقط یک مخزن شخص ثالث خطا دارد و بقیه سالم‌اند، خود آن مخزن هم می‌تواند تاریخ نادرست داشته باشد.
پیام does not have a Release file موضوع دیگری است: یعنی فایل مورد انتظار پیدا نشده یا مخزن برای نسخه انتخابی مناسب نیست. همچنین EXPKEYSIG به اعتبار کلید امضا مربوط می‌شود؛ برای آن راهنمای کلید منقضی مخزن را ببینید. صرف شباهت کلمه Release به معنی یک علت مشترک نیست.

۲. ساعت UTC را با منبع معتبر مقایسه کنید

این دو دستور را در سرور اجرا کنید:
کد / دستورdate -u date -Is
اولی تاریخ و ساعت UTC را نشان می‌دهد. دومی زمان محلی را همراه اختلاف آن با UTC چاپ می‌کند. تاریخ UTC را با ساعت UTC یک دستگاه دیگر که همگام‌سازی آن را می‌شناسید یا با منبع معتبر زمانی مقایسه کنید. چند ساعت تفاوت در نمایش محلی می‌تواند فقط به منطقه زمانی مربوط باشد؛ اما اگر لحظه UTC واقعاً عقب یا جلو باشد، ساعت سیستم درست نیست.
برای دیدن وضعیت مفصل‌تر:
کد / دستورtimedatectl status
بسته به نسخه، خروجی شامل Universal time، Time zone، System clock synchronized و وضعیت سرویس NTP است. synchronized: no سرنخی برای بررسی سرویس زمان است، اما نام سرویس و نحوه مدیریت آن در هر نصب متفاوت است. عوض‌کردن Time zone فقط نمایش زمان محلی را تغییر می‌دهد و ساعت واقعی اشتباه را درمان نمی‌کند.
در کانتینر یا محیطی که systemd مدیر اصلی نیست، این دستور ممکن است در دسترس نباشد یا نتواند ساعت میزبان را اصلاح کند. ساعت و سرویس زمان را در میزبان یا پنل ماشین مجازی با مدیر آن بررسی کنید؛ به کانتینر دسترسی اضافی برای تغییر ساعت ندهید.

۳. ببینید کدام سرویس زمان را مدیریت می‌کند

روی بسیاری از نصب‌ها یکی از سرویس‌های systemd-timesyncd یا Chrony استفاده می‌شود، نه هر دو به‌طور هم‌زمان. برای دیدن وضعیت آن‌ها:
کد / دستورsystemctl status systemd-timesyncd --no-pager systemctl status chrony --no-pager
اگر یکی نصب نشده یا نامش در توزیع شما فرق دارد، پیام not found به‌تنهایی خرابی نیست. بررسی کنید کدام سرویس واقعاً فعال و مسئول ساعت است. برای timesyncd فعال، این دستور وضعیت منبع و آخرین همگام‌سازی را نشان می‌دهد:
کد / دستورtimedatectl timesync-status sudo journalctl -u systemd-timesyncd -b -n 80 --no-pager
اگر خروجی وضعیت در نسخه شما پشتیبانی نمی‌شود، گزارش سرویس و مستندات همان نسخه را بخوانید. خطاهای DNS، timeout یا نبود پاسخ از سرور زمان را با زمان رخداد تطبیق دهید. اگر Chrony مسئول زمان است و ابزارش نصب است، از گزارش خود آن استفاده کنید:
کد / دستورchronyc tracking chronyc sources -v
در گزارش منابع، منبع انتخاب‌شده و وضعیت دسترسی را با راهنمای نسخه نصب‌شده مقایسه کنید. نبود منبع انتخاب‌شده یعنی هنوز همگام‌سازی قابل اتکا ندارید. برای تغییر ساعت چند سرویس زمان را هم‌زمان فعال نکنید؛ ابتدا مشخص کنید سیستم شما با کدام‌یک مدیریت می‌شود.

۴. اگر همگام‌سازی خاموش یا قطع شده است

اگر سیستم شما از قابلیت NTP در timedatectl استفاده می‌کند، سرویس زمان مناسب نصب است و خاموش‌بودن آن تأیید شده، می‌توانید همگام‌سازی را فعال کنید:
کد / دستورsudo timedatectl set-ntp true timedatectl status
این دستور قرار نیست فوراً ساعت درست را تضمین کند. چند لحظه بعد دوباره وضعیت همگام‌سازی و زمان UTC را با منبع معتبر مقایسه کنید. اگر از قبل Chrony یا سامانه دیگری مسئول تنظیم ساعت است، به‌جای فعال‌سازی کورکورانه، همان سرویس را طبق روش نصب خود بررسی و تعمیر کنید.
اگر سرویس فعال است اما به منبع نمی‌رسد، نام سرورهای زمانی پیکربندی‌شده را در تنظیم همان سرویس ببینید. برای timesyncd می‌توانید تنظیمات قابل مشاهده را با دستور زیر بخوانید:
کد / دستورtimedatectl show-timesync --all
نام سرور و خطای گزارش را بررسی کنید. DNS، مسیر خروجی شبکه و دسترسی UDP پورت ۱۲۳ به منبع مجاز از علت‌های احتمالی‌اند؛ در شبکه سازمانی ممکن است فقط سرور زمانی داخلی اجازه داشته باشد. از مدیر شبکه مقصد و قانون لازم را بپرسید و فقط مسیر مجاز را اصلاح کنید. اگر DNS نام منبع را پیدا نمی‌کند، مشکل نام را جداگانه حل کنید؛ بازکردن همه فایروال یا انتخاب سرور زمانی ناشناس لازم نیست.
اگر تنظیمات timesyncd اصلاح شده و این همان سرویس فعال سیستم است، در زمان مناسب می‌توانید آن را دوباره راه بیندازید:
کد / دستورsudo systemctl restart systemd-timesyncd timedatectl timesync-status
راه‌اندازی سرویس زمان می‌تواند باعث اصلاح ساعت شود. اثر آن بر کارهای زمان‌بندی‌شده و برنامه‌های وابسته به زمان را از قبل در نظر بگیرید. اگر همگام‌سازی همچنان برقرار نیست، خطای جدید journalctl را بخوانید؛ تکرار restart بدون رفع مشکل شبکه کمکی نمی‌کند. رفتار timesyncd و دستور وضعیت در راهنمای اوبونتو توضیح داده شده است.

۵. اگر ساعت درست است اما فقط یک مخزن خطا می‌دهد

آدرس و نسخه مخزن را از پیام خطا با تنظیمات نصب‌شده مقایسه کنید:
کد / دستورgrep -R -n 'URIs\|Suites\|^deb ' /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null
فایل sources.list ممکن است در بعضی نسخه‌ها وجود نداشته باشد؛ خروجی فایل‌های .list و .sources را با مستند رسمی همان مخزن مقایسه کنید. آدرس‌ها یا تنظیمات خصوصی را پیش از ارسال گزارش پاک کنید. به‌روزبودن ساعت سرور را دوباره با منبع معتبر تأیید کنید؛ سپس تاریخ مخزن، آینه یا پراکسی را با مسئول آن بررسی کنید. اگر Release واقعاً تاریخ آینده دارد، صبر برای اصلاح آن یا استفاده از آینه رسمی و سازگار با نسخه سیستم راه درست‌تری از بی‌اعتبارکردن کنترل تاریخ است.
APT برای محافظت در برابر اطلاعات قدیمی یا دارای تاریخ نامعتبر بررسی زمان انجام می‌دهد. گزینه‌هایی مثل غیرفعال‌کردن Check-Date را به‌عنوان درمان عمومی وارد نکنید؛ طبق راهنمای تنظیمات APT این کار بررسی‌های زمانی دیگر را هم تحت تأثیر قرار می‌دهد. پاک‌کردن همه کلیدها یا خاموش‌کردن اعتبارسنجی امضا نیز مشکل ساعت را برطرف نمی‌کند.

۶. نتیجه را تأیید و از تکرار جلوگیری کنید

بعد از اصلاح ساعت یا مخزن، دوباره اجرا کنید:
کد / دستورdate -u timedatectl status sudo apt update
خروجی UTC باید با منبع معتبر هماهنگ باشد و پیام not valid yet برای مخزن مربوط تکرار نشود. همه خطوط خطای APT را بخوانید؛ موفق‌شدن یک مخزن به معنی موفقیت بقیه نیست. سپس یک بار دیگر پس از مدتی وضعیت همگام‌سازی را ببینید. اگر ساعت بعد از ریبوت یا بازگشت snapshot دوباره به عقب می‌رود، تنظیم زمان مهمان و میزبان مجازی‌سازی و سرویس مسئول همگام‌سازی را با مدیر زیرساخت بررسی کنید. هشدار برای قطع همگام‌سازی کمک می‌کند مشکل پیش از ازکارافتادن به‌روزرسانی‌ها دیده شود.
اشتراک‌گذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.

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

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