فارسی (Farsi)
€EUR

رفع خطاهای رایج APT در VPS اوبونتو و دبیان

3 min
سرور مجازی (VPS/VDS)

دیر یا زود apt update روی VPS Linux Infrawire شما با انبوهی از متن قرمز شکست می‌خورد: کلید GPG گم‌شده، مخزنی که دیگر وجود ندارد، یا قفلی که برطرف نمی‌شود. هر خطا دلیل روشن و راه‌حل کوتاهی دارد.

این راهنما رایج‌ترین مشکلات Ubuntu 24.04 و Debian 12 را از کم‌دخالت‌ترین راه‌حل تا سنگین‌ترین مرور می‌کند.

📋 پیش‌نیازها

  • یک VPS با Ubuntu 24.04 یا Debian 12
  • دسترسی SSH با کاربر root (آی‌پی و رمز root را در پنل کاربری خود می‌یابید)
  • آشنایی پایه با خط فرمان

1. ابتدا منابع را پیدا کنید

پیش از رفع هر مشکل، بدانید مخازن شما کجا تعریف شده‌اند:

Bash
cat /etc/os-release cat /etc/apt/sources.list ls -l /etc/apt/sources.list.d/ apt update 2>&1 | grep -E '^(Err|W:|E:)'

در Ubuntu 24.04 مخازن اصلی در /etc/apt/sources.list.d/ubuntu.sources و با قالب deb822 (فایل‌های .sources) قرار دارند. Debian 12 هنوز قالب کلاسیک تک‌خطی را در /etc/apt/sources.list به کار می‌برد و هر دو قالب کنار هم کار می‌کنند.

Bash
# نمونه‌ای از یک ورودی deb822 (Ubuntu 24.04) Types: deb URIs: http://archive.ubuntu.com/ubuntu/ Suites: noble noble-updates noble-backports Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

2. خطاهای قفل و dpkg ناتمام

پیام Could not get lock /var/lib/dpkg/lock-frontend یعنی فرایند دیگری از apt استفاده می‌کند؛ اغلب unattended-upgrades درست پس از بوت. پیش از هر کاری بررسی کنید:

Bash
ps aux | grep -E 'apt|dpkg|unattended' | grep -v grep lsof /var/lib/dpkg/lock-frontend

اگر فرایندی در حال اجراست چند دقیقه صبر کنید. فایل قفل را فقط وقتی حذف کنید که هیچ چیز آن را نگه نداشته باشد (اگر اشتباه کنید خطرناک است) و سپس وضعیت ناتمام را ترمیم کنید:

Bash
rm -f /var/lib/dpkg/lock-frontend /var/lib/dpkg/lock /var/cache/apt/archives/lock dpkg --configure -a apt --fix-broken install

پیام dpkg was interrupted, you must manually run 'dpkg --configure -a' دقیقاً با اولین دستور بالا حل می‌شود.

3. NO_PUBKEY و کلیدهای GPG گم‌شده

خطای The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ABCD1234 یعنی یک مخزن شخص ثالث کلید مورد اعتماد ندارد. از apt-key منسوخ استفاده نکنید: کلید را در /etc/apt/keyrings/ بگذارید و با signed-by به آن ارجاع دهید.

Bash
install -d -m 0755 /etc/apt/keyrings curl -fsSL https://example.com/repo/key.gpg | gpg --dearmor -o /etc/apt/keyrings/example.gpg chmod 644 /etc/apt/keyrings/example.gpg echo 'deb [signed-by=/etc/apt/keyrings/example.gpg] https://example.com/repo stable main' > /etc/apt/sources.list.d/example.list apt update

نشانی کلید را از مستندات رسمی نرم‌افزار بردارید و اگر curl gnupg نصب نیست ابتدا آن‌ها را نصب کنید. اگر خطا به خود آرشیو Ubuntu یا Debian مربوط است، بسته کلیدها را دوباره نصب کنید: apt install --reinstall ubuntu-keyring یا debian-archive-keyring.

4. مخازن شخص ثالث خراب

خطای 404 Not Found یا does not have a Release file روی یک PPA یا مخزن سازنده معمولاً یعنی دیگر از نسخه شما پشتیبانی نمی‌کند. به‌جای حذف، آن را غیرفعال کنید:

Bash
# فایل .list کلاسیک: نامش را عوض کنید mv /etc/apt/sources.list.d/broken.list /etc/apt/sources.list.d/broken.list.disabled # فایل .sources با قالب deb822: این خط را داخل بلوک اضافه کنید Enabled: no

سپس دوباره apt update را اجرا کنید. خطا از بین می‌رود و بسته‌های نصب‌شده به کار خود ادامه می‌دهند.

5. خطای ساعت: Release file not valid yet

Release file for ... is not valid yet (invalid for another 3h 12min) یعنی ساعت سیستم از مهر زمانی مخزن عقب است. بررسی و همگام‌سازی مجدد کنید:

Bash
timedatectl timedatectl set-ntp true systemctl restart systemd-timesyncd

اگر systemd-timesyncd نصب نیست (برخی ایمیج‌های حداقلی Debian)، به‌جای آن apt install -y chrony را به کار ببرید.

6. نسخه‌های پایان‌یافته (EOL)

وقتی پشتیبانی یک نسخه تمام می‌شود، بسته‌های آن جابه‌جا می‌شوند و apt update خطای 404 یا no longer has a Release file برمی‌گرداند. برای نسخه‌ای از Ubuntu که LTS نیست، منابع را به آرشیو نسخه‌های قدیمی هدایت کنید:

Bash
sed -i 's|http://archive.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g; s|http://security.ubuntu.com/ubuntu|http://old-releases.ubuntu.com/ubuntu|g' /etc/apt/sources.list /etc/apt/sources.list.d/*.sources 2>/dev/null apt update

برای Debian قدیمی از http://archive.debian.org/debian استفاده کنید و خط security را حذف کنید. سیستم EOL را فقط راه‌حل موقت بدانید: دیگر وصله امنیتی نمی‌گیرد، پس ارتقا به یک نسخه پشتیبانی‌شده را برنامه‌ریزی کنید.

7. بررسی نهایی

Bash
apt update apt upgrade --dry-run apt-get check

apt update باید بدون خط Err یا E: تمام شود و apt-get check نباید چیزی چاپ کند.

🛠️ عیب‌یابی

قفل در هر تلاش برمی‌گردد: احتمالاً unattended-upgrades در حال اجراست. systemctl status unattended-upgrades را ببینید و منتظر پایان آن بمانید.

Conflicting values set for option Signed-By: یک مخزن دوبار با کلیدهای متفاوت تعریف شده است. با grep -r example.com /etc/apt/ آن را بیابید و فقط یک ورودی نگه دارید.

apt --fix-broken install روی اسکریپت یک بسته شکست می‌خورد: خطوط آخر خطا را بخوانید، سپس dpkg --remove --force-remove-reinstreq PACKAGE را امتحان و بعد نصب مجدد عادی را انجام دهید.


✅ مدیر بسته شما دوباره سالم است: به‌روزرسانی و نصب بدون خطا انجام می‌شود!

با آخرین پیشنهادها، تخفیف‌ها و تبلیغات ویژه به‌روز بمانید.

مشاهده تخفیف‌ها

ما از کوکی استفاده می‌کنیم

ما از کوکی‌های تحلیلی برای بهبود تجربه شما در سایت خود استفاده می‌کنیم. هیچ داده‌ای به اشخاص ثالث فروخته نمی‌شود. اطلاعات بیشتر در سیاست حفظ حریم خصوصی ما.