देर-सवेर आपके VPS Linux Infrawire पर apt update लाल अक्षरों की दीवार के साथ फ़ेल होगा: GPG कुंजी गायब, रिपॉज़िटरी अब मौजूद नहीं, या लॉक जो हटता ही नहीं। हर त्रुटि का स्पष्ट कारण और छोटा समाधान होता है।
यह गाइड Ubuntu 24.04 और Debian 12 की सबसे आम समस्याओं को सबसे कम दखल वाले सुधार से सबसे भारी सुधार तक क्रम से समझाती है।
📋 पूर्वापेक्षाएँ
- Ubuntu 24.04 या Debian 12 वाला VPS
- root SSH एक्सेस (IP और root पासवर्ड आपके क्लाइंट एरिया में मिलते हैं)
- कमांड लाइन की बुनियादी जानकारी
1. पहले सोर्स ढूँढें
कुछ भी ठीक करने से पहले जानें कि आपके रिपॉज़िटरी कहाँ परिभाषित हैं:
Bashcat /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। कुछ करने से पहले जाँचें:
Bashps aux | grep -E 'apt|dpkg|unattended' | grep -v grep lsof /var/lib/dpkg/lock-frontend
अगर कोई प्रोसेस चल रही है तो कुछ मिनट रुकें। लॉक फ़ाइल तभी हटाएँ जब उसे कोई न पकड़े हो (गलती हुई तो जोखिम भरा), फिर रुकी हुई स्थिति सुधारें:
Bashrm -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 से उसका हवाला दें।
Bashinstall -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
सॉफ़्टवेयर के आधिकारिक दस्तावेज़ में दिया गया कुंजी URL इस्तेमाल करें, और curl gnupg न हों तो पहले इंस्टॉल करें। अगर त्रुटि खुद Ubuntu या Debian आर्काइव की है, तो कुंजी पैकेज दोबारा इंस्टॉल करें: apt install --reinstall ubuntu-keyring या debian-archive-keyring।
4. टूटे हुए थर्ड-पार्टी रिपॉज़िटरी
किसी PPA या वेंडर रिपॉज़िटरी पर 404 Not Found या does not have a Release file का मतलब आमतौर पर यह होता है कि वह आपके संस्करण को अब सपोर्ट नहीं करता। उसे हटाने के बजाय बंद कर दें:
Bash# पारंपरिक .list फ़ाइल: नाम बदलें mv /etc/apt/sources.list.d/broken.list /etc/apt/sources.list.d/broken.list.disabled # deb822 .sources फ़ाइल: ब्लॉक के अंदर यह पंक्ति जोड़ें Enabled: no
फिर apt update दोबारा चलाएँ। त्रुटि गायब हो जाती है और पहले से इंस्टॉल पैकेज चलते रहते हैं।
5. घड़ी की त्रुटि: Release file not valid yet
Release file for ... is not valid yet (invalid for another 3h 12min) का मतलब है कि सिस्टम की घड़ी रिपॉज़िटरी के टाइमस्टैम्प से पीछे है। जाँचें और दोबारा सिंक करें:
Bashtimedatectl timedatectl set-ntp true systemctl restart systemd-timesyncd
अगर systemd-timesyncd इंस्टॉल नहीं है (कुछ मिनिमल Debian इमेज), तो apt install -y chrony इस्तेमाल करें।
6. सपोर्ट समाप्त हो चुके संस्करण
जब किसी संस्करण का सपोर्ट खत्म होता है, उसके पैकेज हटा दिए जाते हैं और apt update 404 या no longer has a Release file लौटाता है। non-LTS Ubuntu संस्करण के लिए सोर्स को पुराने रिलीज़ के आर्काइव की ओर मोड़ें:
Bashsed -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. जाँच
Bashapt 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 आज़माएँ और उसके बाद सामान्य रीइंस्टॉल करें।
✅ आपका पैकेज मैनेजर फिर से स्वस्थ है: अपडेट और इंस्टॉल बिना त्रुटि के चलते हैं!