"De volgende pakketten zijn teruggehouden:" Waarom en hoe los ik dit op?

Ik heb zojuist een PPA repository toegevoegd voor de ontwikkelingsversie van de GIMP, maar ik krijg deze foutmelding:

$ apt-get update && apt-get upgrade
...
The following packages have been kept back:
  gimp gimp-data libgegl-0.0-0 libgimp2.0

Waarom en hoe kan ik dit oplossen zodat ik de laatste versie kan gebruiken in plaats van degene die ik nu heb?

Oplossing

Volgens een artikel op debian-administration.org,

Als de afhankelijkheden zijn veranderd van een van de pakketten die u hebt geïnstalleerd zodat een nieuw pakket moet worden geïnstalleerd om de upgrade uit te voeren, dan zal dat worden vermeld als "kept-back".

Voorzichtige oplossing 1:

Per Pablo's antwoord, kun je sudo apt-get --with-new-pkgs upgrade uitvoeren, en het zal de teruggehouden pakketten installeren.

Dit heeft het voordeel dat de achtergehouden pakketten niet gemarkeerd worden als "handmatig geïnstalleerd," wat meer gebruikersinterventie zou kunnen forceren (zie commentaar).

Als Pablo's oplossing voor jou werkt, geef het dan een upvote. Zo niet, geef dan commentaar over wat er fout ging.

Voorzichtige oplossing 2:

De voorzichtige oplossing is om sudo apt-get install uit te voeren. In de meeste gevallen zal dit de teruggehouden pakketten geven wat ze nodig hebben om succesvol te upgraden.

Aggressieve oplossing:

Een meer agressieve oplossing is om sudo apt-get dist-upgrade uit te voeren, welke de installatie van deze nieuwe afhankelijkheden zal forceren.

Maar dist-upgrade kan behoorlijk gevaarlijk zijn. In tegenstelling tot upgrade kan het pakketten verwijderen om complexe afhankelijkheidssituaties op te lossen. In tegenstelling tot u, is APT niet altijd slim genoeg om te weten of deze toevoegingen en verwijderingen een ravage kunnen aanrichten.

Dus als u zich op een plaats bevindt waar de "voorzichtige oplossing" niet werkt, dist-upgrade kan werken... maar u'bent waarschijnlijk beter af om wat meer over APT te leren en de afhankelijkheidsproblemen "met de hand" op te lossen door pakketten per geval te installeren en te verwijderen.

Zie het als het repareren van een auto... als je tijd hebt en handig bent met een moersleutel, krijg je wat gemoedsrust door je in te lezen en de reparatie zelf te doen. Als je'je geluk hebt, kun je je auto afgeven bij je nichtje dist-upgrade en hopen dat ze verstand van zaken heeft.

Commentaren (26)

Er zijn gewoonlijk twee redenen waarom u dit bericht kunt zien.

Als het upgraden van het programma (via sudo apt-get upgrade) zou leiden tot het toevoegen of verwijderen van pakketten, dan zal het programma worden tegengehouden. Je kunt in dit geval sudo apt-get dist-upgrade gebruiken, die dan zal aanbieden om de extra programma's toe te voegen of te verwijderen.

Dit is vrij gebruikelijk en meestal geen probleem. Af en toe (vooral tijdens een Ubuntu alpha) zal een dist-upgrade aanbieden om een heleboel andere programma's te verwijderen, in welk geval je het waarschijnlijk wilt annuleren.

Als het programma afhankelijk is van pakketten of versies die niet beschikbaar zijn, dan zal het programma worden tegengehouden. Je kunt in deze omstandigheid echt niets anders doen dan wachten, aangezien het pakket in principe niet meer te verwijderen is. Dit kan gebeuren wanneer pakketten in een verkeerde volgorde aan het archief worden toegevoegd, wanneer een pakket een andere naam krijgt, of wanneer een pakket stopt met het leveren van een virtueel pakket.

Commentaren (2)

Waarschijnlijk worden deze pakketten tegengehouden omdat hun installatie afhankelijkheidsinconsistenties zou creëren. Dit kan ofwel gebeuren omdat u archieven gebruikt in actieve ontwikkeling, ppas, of omdat de mirror die u gebruikt niet volledig geüpdatet is.

In het laatste geval, wacht gewoon, wanneer de afhankelijkheden opgelost zijn zal het de volgende keer geïnstalleerd worden.

Edit:

Er is nog een andere mogelijkheid, pakketten kunnen worden tegengehouden als er een wachttijd op is gezet, of als ze zijn vastgepind.

Commentaren (5)