Als u woorden als "onvervulde afhankelijkheden", "gebroken pakketten", "pakketten zijn achtergehouden" in terminaluitvoer ziet, is de kans groot dat u afhankelijkheidsconflicten hebt. Dit artikel somt een aantal methoden op die kunnen worden gebruikt om dit soort afhankelijkheidsfouten te voorkomen en op te lossen. Merk op dat de hieronder voorgestelde methoden niet in willekeurige volgorde staan:.
Pakketten bijwerken
Het allereerste dat u in geval van fouten moet doen, is het update-commando uitvoeren. Het ververst alle officiële en externe opslagplaatsen die u aan uw systeem hebt toegevoegd en haalt een nieuwe lijst met pakketten op. Het uitvoeren van de update-opdracht vanaf terminal omzeilt de gefaseerde uitrol van officiële Ubuntu-pakketten via de GUI-updater, zodat u altijd de nieuwste lijst met pakketten krijgt.
U kunt repository's bijwerken door de volgende opdracht uit te voeren:
$ sudo apt-updatePakketdownloadserver wijzigen
Als u foutmeldingen krijgt dat het pakket niet kan worden gevonden wanneer u de bovenstaande update-opdracht uitvoert, probeer dan de downloadspiegels te wijzigen. Ubuntu-pakketten worden aan eindgebruikers geleverd vanaf servers over de hele wereld. Soms zijn er slechts gedeeltelijke of kapotte pakketupdates beschikbaar vanaf deze servers, wat resulteert in fouten tijdens de update. Dit probleem wordt meestal na een tijdje automatisch opgelost wanneer alle Ubuntu-pakketten correct zijn gekloond in deze mirrors. U kunt de spiegellocatie echter handmatig wijzigen om dit probleem op te lossen.
Om de downloadserver te wijzigen, start u de app "Software & Updates" vanuit het app-opstartprogramma. Op het tabblad "Ubuntu-software" is het bijna gegarandeerd om eventuele problemen met de beschikbaarheid van pakketten op te lossen door "Hoofdserver" in de vervolgkeuzelijst "Downloaden van" te selecteren. De downloadsnelheid kan echter laag zijn, afhankelijk van uw locatie en de nabijheid van de servers. Ubuntu selecteert standaard een server die je maximale snelheid geeft op basis van je huidige locatie. U kunt het overschrijven door een vermelde server te kiezen of door op "Selecteer beste server" te klikken om de keuze op Ubuntu te laten.
Upgrade-pakketten
Het upgraden van geïnstalleerde pakketten kan afhankelijkheidsfouten oplossen. Er zijn twee commando's beschikbaar om Ubuntu-pakketten te upgraden, beide met verschillend gedrag:
- "upgrade": upgradet geïnstalleerde pakketten als er updates beschikbaar zijn, verwijdert geen enkel pakket, zelfs als er onvervulde en verbroken afhankelijkheden zijn
- "dist-upgrade": doet pogingen om pakketten slim te upgraden en afhankelijkheden op te lossen, verwijdert kapotte en installeert nieuwe afhankelijkheden waar nodig om fouten te herstellen
De commando's om respectievelijk te upgraden en dist-upgrade zijn:
$ sudo apt-update$ sudo apt dist-upgrade
In cache en resterende pakketten opschonen
Ubuntu's pakketbeheerder "apt" houdt gedownloade pakketten in een cachemap. De volgende keer dat u een pakket opnieuw moet installeren dat al in de cache is opgeslagen, haalt Ubuntu het deb-pakket uit de cachemap in plaats van het opnieuw te downloaden van de server. Het wissen van deze cache maakt schijfruimte vrij en helpt in sommige gevallen ook bij het oplossen van afhankelijkheids- en installatiefouten.
De pakketcache van Apt kan worden gewist door de onderstaande opdracht uit te voeren:
$ sudo apt cleanEr is nog een ander apt-commando "autoclean" dat de pakketcache wist. In plaats van de hele map te wissen, worden echter alleen pakketten verwijderd die van de opslagplaatsservers zijn verwijderd.
$ sudo apt autocleanDoe een schijninstallatie
Het is mogelijk om de installatie van een pakket te simuleren om eventuele fouten te controleren die optreden tijdens de echte installatie. Voer de onderstaande opdracht uit terwijl u "pakketnaam" vervangt door uw gewenste pakketnaam (zonder aanhalingstekens) om een schijninstallatie uit te voeren.
$ sudo apt install --dry-run "pakketnaam"Een schijnverwijdering kan op dezelfde manier worden gedaan:
$ sudo apt remove --dry-run "pakketnaam"Gebroken pakketten repareren
Het is mogelijk om gebroken pakketten en onvervulde afhankelijkheden te hebben, vooral wanneer u meerdere pakketten tegelijk installeert. Met de onderstaande opdracht wordt geprobeerd deze problemen op te lossen door kapotte afhankelijkheden te installeren en te repareren of door een pakket helemaal te verwijderen dat verantwoordelijk is voor afhankelijkheidsconflicten.
$ sudo apt -f installPakketten configureren mislukt vanwege onderbrekingen
Soms stopt de apt-pakketbeheerder abrupt met het achterlaten van pakketten die niet konden worden ingesteld. Deze onderbrekingen zijn meestal het gevolg van factoren buiten de controle van de apt-pakketbeheerder. Als u bijvoorbeeld per ongeluk de terminal hebt gesloten of als uw pc plotseling wordt uitgeschakeld, kan apt de installatie niet voltooien. Het uitvoeren van de onderstaande opdracht lost pakketfouten en afhankelijkheidsproblemen op die voortvloeien uit dit probleem.
$ sudo dpkg --configure -aGebruik PPA-Purge
Een "Persoonlijk pakketarchief" of een PPA is een softwarerepository waarmee Ubuntu-gebruikers nieuwe pakketten kunnen upgraden of installeren van niet-officiële bronnen. PPA-Purge is een tool die deze PPA-bronnen van derden verwijdert en pakketten die van PPA's zijn geïnstalleerd, downgradet naar standaardversies. Het gebruik van PPA-Purge lost alle afhankelijkheidsconflicten op die voortkomen uit pakketten die zijn geïnstalleerd of geüpgraded vanuit de PPA. Voer de volgende opdracht uit om de PPA-Purge-opdrachtregelapp in Ubuntu te installeren:
$ sudo apt install ppa-purgeVoer de opdracht in de volgende indeling uit om een PPA op te schonen:
$ sudo ppa-purge “ppa:adres”Bijvoorbeeld, Geany-teksteditor PPA toegevoegd van hier kan worden verwijderd door het commando uit te voeren:
$ sudo ppa-purge ppa:geany-dev/ppaAptitude Pakketbeheer gebruiken
Aptitude-pakketbeheerder kan worden gebruikt in plaats van de standaard apt-pakketbeheerder in Ubuntu om afhankelijkheidsfouten op te lossen. Aptitude is nieuwer dan apt-pakketbeheerder en biedt extra opties, een op een terminal gebaseerde frontend en algemeen gebruiksgemak. Aptitude combineert veel apt-opties in een enkele opdracht, zodat u niet meerdere opdrachten hoeft uit te voeren om fouten te herstellen.
Als u bijvoorbeeld aptitude pakketbeheerder gebruikt om zelfs maar een enkel pakket te verwijderen, krijgt u een optie om ongebruikte en overgebleven pakketten te verwijderen, terwijl er een apart commando in apt is om hetzelfde te doen. Aptitude is veel slimmer in het oplossen van afhankelijkheidsconflicten dan apt, het geeft meestal gedetailleerde feedback om conflicten op te lossen, met meerdere opties die door de gebruiker kunnen worden geselecteerd. Ik zorg er altijd voor dat aptitude en PPA-Purge op mijn systeem zijn geïnstalleerd voordat ik zeer experimentele pakketten ontvang.
Aptitude kan worden geïnstalleerd door onderstaande opdracht uit te voeren:
$ sudo apt install aptitudeAptitude en apt delen veel opdrachtregelopties, waarbij aptitude een paar verschillen heeft. U kunt alle aptitude-opties verkennen vanuit hier.
Ubuntu Desktop-pakket opnieuw installeren
Als u het pakket "ubuntu-desktop" opnieuw installeert, worden essentiële pakketten opgehaald die standaard in Ubuntu zijn geïnstalleerd. Het krijgt alle pakketten die afhankelijk zijn van ubuntu-desktop metapakketa. Voer de onderstaande opdracht uit om ubuntu-desktop opnieuw te installeren:
$ sudo apt install --installeer ubuntu-desktop opnieuwMerk op dat de bovenstaande opdracht alleen essentiële kernpakketten zal installeren en geen apps zoals Firefox, Thunderbird, videospeler enz.
Verwijder of schakel PPA's uit voordat u een upgrade uitvoert naar een nieuwere versie van Ubuntu
Hoewel Ubuntu alle PPA's uitschakelt voordat een systeemupgrade wordt uitgevoerd, moet u PPA's van derden handmatig verwijderen om onvervulde afhankelijkheidsfouten tijdens en na een systeemupgrade te voorkomen. De beste manier om dit te doen, is door het PPA-Purge-commando uit te voeren dat hierboven is uitgelegd.
U kunt ook alleen PPA-repository's verwijderen. Dit kan echter afhankelijkheidsfouten tijdens de upgrade niet voorkomen. PPA's kunnen op twee manieren worden verwijderd, de eerste omvat het gebruik van de opdrachtregel en de tweede vereist het gebruik van een GUI-app. Houd er rekening mee dat deze methoden alleen PPA-repository's verwijderen, waarbij alle eerder geüpgradede of geïnstalleerde pakketten in het systeem achterblijven.
Om een PPA te verwijderen met behulp van de opdrachtregel, voert u de onderstaande opdracht uit in de volgende indeling:
$ sudo add-apt-repository --verwijder “ppa:name”Bijvoorbeeld, Geany-teksteditor PPA toegevoegd van hier kan worden verwijderd door de opdracht uit te voeren:
$ sudo add-apt-repository --remove ppa:geany-dev/ppaOm een PPA te verwijderen met behulp van de GUI-methode, moet u meestal de app "Software en updates" starten vanuit het app-opstartprogramma. Vanwege een bug in Ubuntu werkt deze methode echter niet altijd en kan PPA's niet worden uitgeschakeld.
Om dit te omzeilen, moeten we Synaptic-pakketbeheerder installeren, een frontend voor apt. Voer de opdracht uit om Synaptic te installeren:
$ sudo apt install synapticStart "Synaptic Package Manager" vanuit het app-opstartprogramma. Klik op "Instellingen" > "Repositories". Ga naar het tabblad "Andere software" en klik op een PPA die u wilt verwijderen om deze te markeren. Klik onderaan op de knop "Verwijderen" om de PPA van het systeem te verwijderen. U kunt een PPA ook uitschakelen zonder deze te verwijderen, zodat deze opnieuw kan worden ingeschakeld na een systeemupgrade. Schakel hiervoor het selectievakje voor een PPA uit in. Nadat u de bovenstaande stappen hebt gevolgd, sluit u het venster "Software & Updates". Wanneer u wordt gevraagd om de repositories te vernieuwen, klikt u op de knop "Herladen".
Wees voorzichtig bij het toevoegen van nieuwe PPA's aan het systeem
Meestal treden afhankelijkheidsfouten op bij het gebruik van PPA's van derden of het installeren van deb-pakketten van niet-officiële bronnen. Er is ook een kans dat malware in uw systeem komt via een PPA. Daarom moet u altijd voorzichtig zijn bij het toevoegen van willekeurige PPA aan uw systeem. Voeg alleen een PPA toe als u de bron en beheerders / ontwikkelaars vertrouwt. Hoewel we tot nu toe nog nooit hebben gehoord van malware of adware die via PPA's wordt verspreid, is er altijd een risico, aangezien dit opslagplaatsen van derden zijn met pakketten die niet zijn geverifieerd door Ubuntu-ontwikkelaars.
Conclusie
Dit zijn enkele methoden die kunnen worden gebruikt om afhankelijkheidsfouten in Ubuntu op te lossen en te voorkomen. Dingen hebben de neiging om kapot te gaan, vooral wanneer u Ubuntu als uw belangrijkste ontwikkelomgeving gebruikt met tal van apps van derden en opdrachtregelprogramma's. De meeste van deze afhankelijkheidsfouten kunnen echter worden geminimaliseerd door apps van officiële, gerenommeerde en vertrouwde bronnen te installeren.