Linux में dependency error की वजह से install न हो तो कारण और समाधान

Linux में किसी सॉफ़्टवेयर को install करते समय अक्सर “dependencies resolve नहीं हो रहीं”, “required package उपलब्ध नहीं है”, या “conflicting package मौजूद है” जैसी error दिखाई देती है। यह केवल इतना नहीं बताती कि कोई एक application install नहीं हो पा रही, बल्कि अक्सर यह संकेत देती है कि पूरे system की package स्थिति कहीं न कहीं असंगत हो चुकी है। apt, dnf और pacman जैसे package manager इस मान्यता पर काम करते हैं कि libraries, runtimes और helper packages सही version combination में मौजूद हों। जब यह chain टूटती है, installation रोक दी जाती है।

महत्वपूर्ण बात यह है कि dependency error को “बस एक package कम है” जैसी छोटी समस्या न समझा जाए। इसके पीछे खराब cache, पुराने repository entries, third-party sources का मिश्रण, बीच में रुका हुआ update, partial upgrade, hold किए गए packages, manually install की गई libraries, या architecture mismatch जैसे कारण हो सकते हैं। इसलिए बिना समझे files delete करना या internet से कोई random .deb / .rpm डाउनलोड करके install करना सही तरीका नहीं है। पहले यह समझना ज़रूरी है कि कौन-सी dependency पूरी नहीं हो रही और क्यों।

Dependency error क्या होती है

Linux में ज़्यादातर packages अकेले काम नहीं करते। किसी application को चलने के लिए एक खास library, runtime version, system tool, या दूसरे supporting package की ज़रूरत हो सकती है। यदि इनमें से कुछ missing है या उसका version incompatible है, तो package manager installation रोक देता है ताकि system और अधिक खराब न हो।

इसलिए dependency error का मतलब सिर्फ “कुछ गायब है” नहीं होता। कई बार इसका मतलब होता है कि दो packages एक-दूसरे के साथ compatible नहीं हैं, दो version conditions एक साथ पूरी नहीं हो सकतीं, या system में installed packages का combination अब consistent नहीं रहा।

आम लक्षण

  • Depends:, requires या unresolved dependency जैसे संदेश दिखाई देना
  • “broken packages” या “dependencies cannot be resolved” जैसे errors आना
  • एक package install करते समय किसी दूसरे package को हटाने की मांग होना
  • किसी library का सही version न मिलना
  • system update के बाद installations fail होने लगना
  • third-party repository जोड़ने के बाद dependency issues शुरू होना
  • partial upgrade के बाद package consistency टूट जाना

सबसे पहले क्या जाँचें

कई बार समस्या dependency की नहीं बल्कि network, DNS या mirror access की होती है। इसलिए सबसे पहले यह देखना चाहिए कि package source तक पहुँच सामान्य है या नहीं।

ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route

इसके बाद package lists को refresh करके देखना चाहिए।

sudo apt update
sudo dnf makecache
sudo pacman -Sy

यदि इस चरण में 404, name resolution failure, signature error या timeout मिलता है, तो असली समस्या dependency नहीं बल्कि repository access भी हो सकती है।

Dependency error के मुख्य कारण

1. Repository mix होना

यह सबसे सामान्य कारणों में से एक है। Official repositories, पुराने PPA, दूसरे distro release के packages, testing repositories और third-party sources यदि साथ में mixed हों, तो एक ही package के लिए अलग-अलग versions और अलग dependency rules आ सकते हैं। नतीजा यह होता है कि एक package नई library माँगता है और दूसरा पुरानी, और system दोनों को एक साथ पूरा नहीं कर पाता।

2. Update बीच में रुक जाना

Power failure, terminal close होना, SSH disconnect या GUI freeze की वजह से update बीच में रुक जाए तो कुछ packages नए version में और कुछ पुराने version में रह जाते हैं। यह “half-updated” स्थिति dependency errors की बहुत आम वजह है।

3. Partial upgrade

विशेष रूप से Arch Linux में partial upgrade बहुत जोखिम भरा माना जाता है। लेकिन Debian / Ubuntu या Fedora systems में भी कुछ core packages को अलग से force करके update करना dependency chain को तोड़ सकता है।

4. Hold किए गए या pinned packages

यदि किसी package को जानबूझकर hold किया गया है या किसी निश्चित version पर pin कर दिया गया है, तो दूसरे packages आवश्यक नए version तक upgrade नहीं हो पाते। इससे पूरी dependency chain अटक सकती है।

5. Manual installation से टकराव

.deb / .rpm files को manually install करना, source code से libraries install करना, या files को package manager के बाहर copy करना system की वास्तविक स्थिति और package manager के रिकॉर्ड के बीच अंतर पैदा कर सकता है। यही बाद में dependency errors का कारण बनता है।

6. Conflicting packages

हर dependency error का मतलब missing package नहीं होता। कई बार दो packages एक ही file provide करते हैं या design के अनुसार साथ install नहीं किए जा सकते। ऐसे में समस्या कमी की नहीं, conflict की होती है।

7. Architecture mismatch

कभी ज़रूरी package उपलब्ध होता है, लेकिन गलत architecture में। उदाहरण के लिए 64-bit system में 32-bit dependency को गलत तरीके से मिलाना, या ARM package को x86_64 machine पर install करना भी dependency error बन सकता है।

8. Cache या metadata inconsistency

पुरानी package lists, corrupted cache, या mirror metadata के mismatch के कारण package manager ऐसी dependency को भी नहीं ढूँढ पाता जो वास्तव में repository में मौजूद है।

apt systems में क्या देखें

Debian / Ubuntu में केवल apt नहीं, बल्कि नीचे काम करने वाले dpkg की स्थिति भी देखनी चाहिए।

अधूरी package state ठीक करना

sudo dpkg --configure -a
sudo apt --fix-broken install

यदि समस्या interrupted update से आई है, तो ये आमतौर पर पहला सही कदम होते हैं।

Hold packages जाँचना

apt-mark showhold

Hold किए गए packages dependency chain को रोक सकते हैं।

Available versions देखना

apt-cache policy package-name

इससे पता चलता है कि कौन-कौन से versions उपलब्ध हैं और वे किस source से आ रहे हैं।

dnf systems में क्या देखें

Fedora / RHEL systems में system consistency और transaction history बहुत महत्वपूर्ण होती है।

Current state जाँचना

sudo dnf check

यह पूरे system में unsatisfied dependencies दिखाने में मदद करता है।

Distribution state के साथ sync करना

sudo dnf distro-sync

यदि system में कुछ packages आगे और कुछ पीछे हो गए हैं, तो यह उन्हें फिर से consistent state में ला सकता है।

Unsatisfied requirements देखना

sudo dnf repoquery --unsatisfied

यह अधिक स्पष्ट रूप से दिखाता है कि कौन-सी dependency पूरी नहीं हो रही।

pacman systems में क्या देखें

Arch Linux में सबसे महत्वपूर्ण बात यह है कि system को फिर से पूरी तरह consistent बनाया जाए और partial upgrade से बचा जाए।

Full system update

sudo pacman -Syu

यदि dependency error पहले से मौजूद है, तो अलग-अलग packages को बार-बार update करने की कोशिश अक्सर स्थिति और बिगाड़ देती है।

Sync database refresh

sudo pacman -Syy

जब local metadata और mirrors में अंतर हो, तब यह उपयोगी होता है।

Logs बहुत महत्वपूर्ण हैं

Dependency error को केवल आख़िरी line देखकर समझना मुश्किल होता है। यह देखना ज़रूरी है कि कौन-सा package किस version की माँग कर रहा है, कौन-सा candidate reject हुआ, और क्यों।

apt / dpkg

sudo tail -n 100 /var/log/apt/history.log
sudo tail -n 100 /var/log/dpkg.log

dnf

sudo journalctl -xe --no-pager | tail -n 100
sudo dnf history

pacman

sudo tail -n 100 /var/log/pacman.log

व्यावहारिक जाँच क्रम

चरण 1: Network और repository access जाँचें

ping -c 4 8.8.8.8
ping -c 4 google.com

चरण 2: Package lists refresh करें

sudo apt update
sudo dnf makecache
sudo pacman -Syy

चरण 3: अधूरी state repair करें

apt के लिए dpkg --configure -a, dnf के लिए dnf check, और pacman के लिए full sync approach अपनाएँ।

चरण 4: Problematic package के versions और sources जाँचें

देखें package किस repository से आ रहा है, कौन-कौन से versions उपलब्ध हैं, और कहीं hold तो नहीं किया गया।

चरण 5: Third-party repositories और पुराने config पर शक करें

बहुत-सी dependency errors की जड़ mixed या outdated package sources होती है।

क्या नहीं करना चाहिए

  • Error समझे बिना random extra packages install करना
  • अविश्वसनीय sources से .deb / .rpm डाउनलोड करना
  • बार-बार partial upgrade करना
  • Signature verification या dependency checks बंद कर देना
  • कारण समझे बिना और third-party repositories जोड़ना

दोबारा समस्या न हो इसके लिए

  • जहाँ तक संभव हो official repositories का उपयोग करें
  • पुराने PPA और गलत release sources न रखें
  • Updates बीच में न रोकें
  • Arch systems में partial upgrade से बचें
  • बड़े बदलाव से पहले snapshot या backup लें

निष्कर्ष

Linux में dependency error की वजह से installation fail होना अक्सर किसी एक missing package का मामला नहीं होता, बल्कि system consistency के बड़े टूटने का संकेत होता है। Mixed repositories, interrupted updates, partial upgrades, held packages, manual library installs और architecture mismatch इसके सामान्य कारण हैं। सही तरीका यह है कि error को ध्यान से पढ़ा जाए, समझा जाए कि कौन-सा package कौन-सा version माँग रहा है और system उसे क्यों नहीं दे पा रहा। उसके बाद distribution के अनुसार सही recovery steps अपनाए जाएँ: apt के लिए dpkg --configure -a और apt --fix-broken install, dnf के लिए dnf check और distro-sync, तथा pacman के लिए complete sync और full system update।

Leave a Reply

ਤੁਹਾਡਾ ਈ-ਮੇਲ ਪਤਾ ਪ੍ਰਕਾਸ਼ਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ। ਲੋੜੀਂਦੇ ਖੇਤਰਾਂ 'ਤੇ * ਦਾ ਨਿਸ਼ਾਨ ਲੱਗਿਆ ਹੋਇਆ ਹੈ।