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:,requiresofunresolved 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.