Linux: installasie misluk weens dependency errors — oorsake en oplossings

In Linux gebeur dit dikwels dat ’n installasie stop met boodskappe soos “dependencies kan nie opgelos word nie”, “vereiste pakket is nie beskikbaar nie” of “daar is ’n konflik met ’n ander pakket”. Dit beteken gewoonlik nie net dat een program nie geïnstalleer kan word nie. Dikwels dui dit daarop dat die pakkettoestand van die hele stelsel reeds inkonsekwent geword het. Pakketbestuurders soos apt, dnf en pacman werk op die aanname dat biblioteke, runtimes en hulppakkette in versoenbare weergawe-kombinasies bestaan. Sodra daardie ketting breek, stop die installasie.

Die belangrikste punt is dat ’n dependency error nie as ’n klein probleem gesien moet word soos “daar kort net nog een pakket” nie. In die praktyk kan die oorsaak ’n beskadigde cache, ou repository-opstelling, gemengde third-party bronne, ’n onderbroke opdatering, partial upgrades, gehoue pakkette, handmatig geïnstalleerde libraries of ’n architecture mismatch wees. Daarom is dit beter om eers te verstaan watter dependency faal en hoekom, eerder as om lukraak lêers te verwyder of .deb / .rpm-pakkette van twyfelagtige webwerwe af te laai.

Wat is ’n dependency error?

Die meeste Linux-pakkette werk nie heeltemal op hul eie nie. ’n Program kan ’n spesifieke library, ’n bepaalde runtime-weergawe, bykomende gereedskap of ander stelselkomponente nodig hê. As een van hierdie vereistes ontbreek of in die verkeerde weergawe beskikbaar is, sal die pakketbestuurder die installasie stop om die stelsel konsekwent te hou.

’n Dependency error beteken dus nie net dat “iets ontbreek” nie. Dit kan ook beteken dat twee vereistes nie gelyktydig vervul kan word nie, dat twee pakkette bots, of dat die beskikbare weergawes nie meer ’n sinvolle kombinasie vorm nie.

Algemene simptome

  • Boodskappe met Depends:, requires of unresolved dependency
  • Die stelsel meld gebreekte pakkette of onoplosbare dependencies
  • Wanneer een pakket geïnstalleer moet word, wil die stelsel ander verwyder
  • ’n Sekere library word vereis, maar die korrekte weergawe is nie beskikbaar nie
  • Na ’n opdatering begin installasies herhaaldelik misluk
  • Probleme begin nadat ’n third-party repository bygevoeg is
  • Na ’n partial upgrade raak die stelsel pakketmatig inkonsekwent

Wat om eerste na te gaan

Soms lyk dit soos ’n dependency problem, terwyl die werklike oorsaak by netwerk, DNS of mirrors lê. Daarom moet mens eers seker maak dat toegang tot pakketbronne normaal werk.

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

Daarna moet mens kyk of die pakketlyste sonder probleme verfris kan word.

sudo apt update
sudo dnf makecache
sudo pacman -Sy

As daar reeds hier 404-foute, naamoplossingsprobleme, signature errors of timeouts verskyn, is die kernprobleem moontlik nie die dependency self nie.

Belangrikste oorsake van dependency errors

1. Gemengde repositorys

Dit is een van die mees algemene oorsake. Official repositorys, ou PPA’s, sources vir ander distro-releases, testing repositorys en third-party bronne kan dieselfde pakketnaam verskaf, maar met verskillende weergawes en dependency-reëls. Dan ontstaan ’n situasie waar een pakket ’n nuwe library vereis en ’n ander slegs met ’n ouer weergawe werk.

2. Onderbroke opdatering

As ’n opdatering halfpad onderbreek word weens kragverlies, ’n geslote terminal, ’n SSH-verbinding wat breek of ’n grafiese omgewing wat vasvries, kan sommige pakkette opgedateer wees terwyl ander oud bly. Hierdie half-voltooide toestand veroorsaak dikwels dependency errors.

3. Partial upgrade

Hierdie probleem is veral bekend in Arch Linux, waar partial upgrades sterk ontmoedig word. Maar ook in Debian / Ubuntu of Fedora kan die geforseerde opdatering van net ’n paar sleutelpakette dieselfde soort onstabiliteit veroorsaak.

4. Gehoue of vasgepinde pakkette

As sekere pakkette opsetlik op ’n ou weergawe gehou word, kan ander pakkette nie na die weergawe beweeg wat hulle nodig het nie. Die hele dependency chain kan dan vasval.

5. Handmatige installasies buite die pakketbestuurder

Wanneer libraries handmatig geïnstalleer word, lêers direk in die stelsel gekopieer word, of los pakkette sonder goeie bronbestuur gebruik word, kan die werklike toestand van die stelsel verskil van wat die pakketbestuurder dink geïnstalleer is.

6. Konflikterende pakkette

Nie elke dependency error beteken dat iets ontbreek nie. Soms is die werklike probleem dat twee pakkette nie saam kan bestaan nie, byvoorbeeld omdat hulle dieselfde lêers voorsien of ontwerp is om mekaar uit te sluit.

7. Architecture mismatch

Dit kan gebeur dat ’n pakket wel bestaan, maar nie vir die regte architecture nie. Om 32-bit en 64-bit pakkette onnet te meng, of om ’n pakket vir ’n ander architecture te gebruik, kan ook as ’n dependency error verskyn.

8. Inkonsistente cache of metadata

Ou pakketlyste, beskadigde cache of mirror-metadata wat nie gesinchroniseer is nie, kan veroorsaak dat die pakketbestuurder ’n dependency nie “sien” nie, al bestaan dit wel in die repository.

Wat om in apt-stelsels na te gaan

In Debian / Ubuntu moet mens nie net na apt kyk nie, maar ook na die toestand van dpkg.

Herstel onvolledige toestande

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

Na ’n onderbroke opdatering is hierdie twee opdragte dikwels die regte beginpunt.

Gaan gehoue pakkette na

apt-mark showhold

’n Gehoue pakket kan die hele dependency chain blokkeer.

Gaan weergawes en bronne na

apt-cache policy pakketnaam

Dit help om te sien watter weergawes beskikbaar is en uit watter bron hulle kom.

Wat om in dnf-stelsels na te gaan

In Fedora / RHEL is dit belangrik om op stelselintegriteit en transaksiegeskiedenis te fokus.

Gaan huidige toestand na

sudo dnf check

Dit help om unsatisfied dependencies oor die hele stelsel te vind.

Sinkroniseer met die distro se verwagte toestand

sudo dnf distro-sync

As sommige pakkette te ver vorentoe en ander agter is, help dit dikwels om alles weer in lyn te bring.

Wys onvoldane vereistes

sudo dnf repoquery --unsatisfied

Hiermee kan mens duideliker sien watter dependencies nie nagekom word nie.

Wat om in pacman-stelsels na te gaan

In Arch Linux is dit veral belangrik om die volle stelselkonsistensie te herstel en partial upgrades te vermy.

Werk die hele stelsel op

sudo pacman -Syu

As dependency errors reeds bestaan, vererger dit dikwels die situasie om net individuele pakkette op te dateer.

Verfris die sync-databasis

sudo pacman -Syy

Dit is nuttig wanneer plaaslike metadata nie meer met die mirrors ooreenstem nie.

Logs is baie belangrik

’n Dependency error kan selde uit net die laaste reël verstaan word. Mens moet sien watter pakket watter weergawe vra, watter kandidaat verwerp is, en waarom.

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

Praktiese volgorde vir diagnose

Stap 1: Kontroleer netwerk en repository-toegang

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

Stap 2: Verfris pakketlyste

sudo apt update
sudo dnf makecache
sudo pacman -Syy

Stap 3: Herstel onvolledige toestande

Vir apt met dpkg --configure -a, vir dnf met dnf check, en vir pacman met ’n full-sync-benadering.

Stap 4: Ondersoek weergawes en bronne van die probleem-pakket

Mens moet uitvind uit watter repository dit kom, watter weergawes beskikbaar is en of iets gehou word.

Stap 5: Verdag third-party bronne en ou config

Baie dependency errors begin in werklikheid by gemengde of verouderde pakketbronne.

Wat vermy moet word

  • Moenie lukraak ekstra pakkette installeer sonder om die fout te verstaan nie
  • Moenie .deb / .rpm van onbetroubare webwerwe aflaai nie
  • Moenie aanhou met partial upgrades nie
  • Moenie signature- of dependency checks afskakel nie
  • Moenie nog third-party repositorys byvoeg sonder om die werklike oorsaak te ken nie

Hoe om te keer dat dit weer gebeur

  • Gebruik waar moontlik official repositorys
  • Moenie ou PPA’s of verkeerde bronne laat bly nie
  • Moenie opdaterings onderbreek nie
  • Vermy partial upgrades in Arch
  • Maak snapshots of backups voor groot veranderinge

Gevolgtrekking

Wanneer Linux nie kan installeer nie weens dependency errors, is die probleem dikwels groter as net een library wat ontbreek. Gemengde repositorys, onderbroke opdaterings, partial upgrades, gehoue pakkette, handmatige installasies en architecture conflicts is baie algemene oorsake. Die sleutel is om die fout noukeurig te lees en te verstaan watter pakket watter weergawe nodig het en waarom die stelsel dit nie kan verskaf nie. Daarna behoort die regte benadering gebruik te word: dpkg --configure -a en apt --fix-broken install vir apt, dnf check en distro-sync vir dnf, en full sync plus full update vir pacman.

Leave a Reply

Jou e-posadres sal nie gepubliseer word nie. Verpligte velde word met * aangedui