Linux-da dependency error səbəbilə quraşdırma alınmır — səbəblər və həll yolları

Linux-da proqram quraşdırarkən tez-tez “dependencies həll edilə bilmir”, “lazım olan paket mövcud deyil” və ya “başqa paketlə konflikt var” kimi xətalar görünür. Bu, sadəcə bir proqramın quraşdırıla bilməməsi demək deyil. Çox vaxt bu, sistemdə paket vəziyyətinin ümumilikdə uyğunsuz hala gəldiyini göstərir. apt, dnfpacman kimi paket menecerləri kitabxanaların, runtimelərin və köməkçi paketlərin uyğun versiya kombinasiyalarında mövcud olmasına əsaslanır. Bu zəncir qırıldıqda, quraşdırma dayanır.

Əsas məsələ odur ki, dependency error-u “sadəcə bir paket çatışmır” kimi kiçik problem saymaq düzgün deyil. Arxasında zədələnmiş cache, köhnə repository sazlaması, third-party mənbələrin qarışdırılması, yarımçıq qalmış update, partial upgrade, hold edilmiş paketlər, əl ilə quraşdırılmış libraries və ya architecture uyğunsuzluğu kimi səbəblər ola bilər. Buna görə də təsadüfi faylları silmək və ya etibarsız saytlardan .deb / .rpm yükləmək əvəzinə, əvvəlcə hansı dependency-nin niyə ödənmədiyini başa düşmək lazımdır.

Dependency error nədir

Linux paketlərinin çoxu təkbaşına işləmir. Hər hansı proqram müəyyən library, xüsusi runtime versiyası, əlavə alət və ya başqa sistem komponenti tələb edə bilər. Bunlardan biri yoxdursa və ya uyğun versiyada deyilsə, paket meneceri sistemi daha da korlamamaq üçün quraşdırmanı dayandırır.

Yəni dependency error yalnız “nəsə çatışmır” demək deyil. Bu, həm də iki şərtin eyni anda ödənə bilmədiyini, iki paketin bir-birinə zidd olduğunu və ya mövcud versiyaların artıq uyğun kombinasiya yaratmadığını göstərə bilər.

Tez-tez görünən əlamətlər

  • Depends:, requires və ya unresolved dependency mesajları görünür
  • Sistem broken packages və ya həll edilə bilməyən dependencies barədə xəbər verir
  • Bir paketi quraşdırmaq istəyəndə başqa paketlərin silinməsi tələb olunur
  • Müəyyən library tələb olunur, amma uyğun versiya tapılmır
  • Update-dən sonra quraşdırmalar ardıcıl şəkildə uğursuz olur
  • Problem third-party repository əlavə etdikdən sonra başlayır
  • Partial upgrade-dən sonra sistem paket baxımından uyğunsuz hala düşür

Əvvəlcə nə yoxlanmalıdır

Bəzən bu, dependency error kimi görünür, amma əsl səbəb şəbəkə, DNS və ya mirror problemidir. Buna görə ilk addım paket mənbələrinə çıxışın normal işlədiyini yoxlamaqdır.

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

Daha sonra paket siyahılarının problemsiz yenilənib-yenilənmədiyinə baxmaq lazımdır.

sudo apt update
sudo dnf makecache
sudo pacman -Sy

Əgər burada 404, ad həll etmə xətası, signature error və ya timeout görünürsə, əsas səbəb dependency-nin özü olmaya bilər.

Dependency error-un əsas səbəbləri

1. Repository-lərin qarışdırılması

Bu, ən geniş yayılmış səbəblərdən biridir. Rəsmi repository-lər, köhnə PPA-lar, başqa distro release üçün mənbələr, testing repository-lər və third-party sources eyni paket adını fərqli versiya və dependency qaydaları ilə təqdim edə bilər. Nəticədə bir paket yeni library, digəri isə köhnə versiya tələb edir və hər ikisini eyni anda təmin etmək mümkün olmur.

2. Yarımçıq qalan update

Əgər update elektrik kəsintisi, terminalın bağlanması, SSH qopması və ya qrafik mühitin donması səbəbilə yarımçıq qalıbsa, bəzi paketlər yenilənmiş, bəziləri isə köhnə vəziyyətdə qala bilər. Bu cür yarımçıq vəziyyət dependency error-lara çox tez səbəb olur.

3. Partial upgrade

Bu problem xüsusilə Arch Linux-da yaxşı tanınır, çünki partial upgrade güclü şəkildə tövsiyə edilmir. Amma Debian / Ubuntu və Fedora-da da yalnız bir neçə əsas paketi məcburi yeniləmək oxşar uyğunsuzluğa gətirib çıxara bilər.

4. Hold edilmiş və ya sabitlənmiş paketlər

Əgər bəzi paketlər bilərəkdən köhnə versiyada saxlanılırsa, başqa paketlər onlara görə ehtiyac duyduğu yeni versiyaya keçə bilmir. Bunun nəticəsində bütün dependency chain bloklana bilər.

5. Paket menecerindən kənar əl ilə quraşdırmalar

Libraries-in əl ilə quraşdırılması, faylların birbaşa sistemə köçürülməsi və ya paketlərin paket menecerindən kənar mənbələrlə yerləşdirilməsi sistemin real vəziyyəti ilə paket menecerinin bildiyi vəziyyət arasında fərq yarada bilər.

6. Bir-biri ilə konflikt edən paketlər

Hər dependency error nəyinsə çatışmaması demək deyil. Bəzən problem ondadır ki, iki paket bir yerdə mövcud ola bilmir, məsələn eyni faylları təqdim edir və ya dizayn baxımından bir-birini istisna edir.

7. Architecture uyğunsuzluğu

Bəzən paket mövcuddur, amma düzgün architecture üçün deyil. 32-bit və 64-bit paketləri yanlış qarışdırmaq və ya başqa architecture üçün paket quraşdırmağa çalışmaq da dependency error kimi görünə bilər.

8. Cache və ya metadata uyğunsuzluğu

Köhnə paket siyahıları, zədələnmiş cache və ya mirrors ilə sinxron olmayan metadata paket menecerinin repository-də əslində mövcud olan dependency-ni “görməməsinə” səbəb ola bilər.

apt sistemlərində nələr yoxlanmalıdır

Debian / Ubuntu sistemlərində təkcə apt-ə deyil, həm də dpkg-nin vəziyyətinə baxmaq vacibdir.

Yarımçıq vəziyyətləri düzəltmək

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

Yarımçıq qalmış update-dən sonra bu iki əmr çox vaxt düzgün başlanğıc olur.

Hold edilmiş paketləri yoxlamaq

apt-mark showhold

Hold edilmiş paket bütün dependency chain-i bloklaya bilər.

Versiyaları və mənbələri yoxlamaq

apt-cache policy paket-adı

Bu, hansı versiyaların mövcud olduğunu və onların hansı mənbədən gəldiyini göstərir.

dnf sistemlərində nələr yoxlanmalıdır

Fedora / RHEL sistemlərində sistem bütövlüyünə və transaction history-yə diqqət yetirmək vacibdir.

Mövcud vəziyyəti yoxlamaq

sudo dnf check

Bu, bütün sistem üzrə ödənməyən dependencies-i tapmağa kömək edir.

Distributivin gözlənilən vəziyyəti ilə sinxronlaşdırmaq

sudo dnf distro-sync

Bəzi paketlər qabağa, bəziləri geri düşübsə, bu əmr çox vaxt sistemi yenidən uyğun vəziyyətə qaytarır.

Ödənməyən tələbləri göstərmək

sudo dnf repoquery --unsatisfied

Bu yolla hansı dependency-lərin ödənmədiyini daha aydın görmək olur.

pacman sistemlərində nələr yoxlanmalıdır

Arch Linux-da tam sistem uyğunluğunu bərpa etmək və partial upgrade-dən qaçmaq xüsusilə vacibdir.

Bütün sistemi yeniləmək

sudo pacman -Syu

Dependency error artıq mövcuddursa, ayrı-ayrı paketləri yeniləmək çox vaxt vəziyyəti daha da pisləşdirir.

Sync bazasını yeniləmək

sudo pacman -Syy

Bu, lokal məlumatların mirror-larla artıq uyğun gəlmədiyi hallarda faydalıdır.

Log-lar çox vacibdir

Dependency error-u yalnız son sətrə baxaraq anlamaq çətindir. Hansı paketin hansı versiyanı tələb etdiyini, hansı namizədin rədd edildiyini və bunun niyə baş verdiyini görmək lazımdır.

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

Praktik diaqnostika ardıcıllığı

Addım 1: Şəbəkəni və repository çıxışını yoxlayın

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

Addım 2: Paket siyahılarını yeniləyin

sudo apt update
sudo dnf makecache
sudo pacman -Syy

Addım 3: Yarımçıq vəziyyətləri düzəldin

apt üçün dpkg --configure -a, dnf üçün dnf check, pacman üçün isə full sync yanaşması tətbiq olunur.

Addım 4: Problemli paketin versiyalarını və mənbələrini araşdırın

Paketi hansı repository verdiyini, hansı versiyaların mövcud olduğunu və nəyinsə hold edilib-edilmədiyini müəyyən edin.

Addım 5: Third-party mənbələrdən və köhnə sazlamalardan şübhələnin

Çox dependency error-un kökündə əslində qarışıq və ya köhnəlmiş paket sources dayanır.

Nələrdən qaçmaq lazımdır

  • Xətanı anlamadan təsadüfi əlavə paketlər quraşdırmaq
  • Etibarsız saytlardan .deb / .rpm yükləmək
  • Partial upgrade etməyə davam etmək
  • Signature və dependency yoxlamasını söndürmək
  • Əsl səbəbi bilmədən daha çox third-party repository əlavə etmək

Problemin təkrarlanmaması üçün

  • Mümkün qədər rəsmi repository-lərdən istifadə edin
  • Köhnə PPA-ları və yanlış mənbələri saxlamayın
  • Update-ləri yarımçıq kəsməyin
  • Arch sistemlərində partial upgrade etməyin
  • Böyük dəyişikliklərdən əvvəl snapshot və ya backup yaradın

Nəticə

Linux-da quraşdırmanın dependency error səbəbilə alınmaması çox vaxt sadəcə bir library çatışmazlığından daha dərin problemdir. Qarışıq repository-lər, yarımçıq qalmış update-lər, partial upgrade, hold edilmiş paketlər, əl ilə quraşdırmalar və architecture konfliktləri ən yayılmış səbəblərdəndir. Əsas məsələ xətanı diqqətlə oxumaq, hansı paketin hansı versiyanı istədiyini və sistemin niyə bunu təmin edə bilmədiyini başa düşməkdir. Bundan sonra düzgün üsul seçilməlidir: apt üçün dpkg --configure -aapt --fix-broken install, dnf üçün dnf checkdistro-sync, pacman üçün isə full sync və full system update.

Leave a Reply

Sizin e-poçt ünvanınız dərc edilməyəcəkdir. Gərəkli sahələr * ilə işarələnmişdir