"Les paquets suivants ont été conservés:" Pourquoi et comment le résoudre?

703

Je viens d'ajouter un dépôt PPA pour la version de développement de GIMP, mais j'obtiens cette erreur:

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

Pourquoi et comment puis-je le résoudre pour pouvoir utiliser la dernière version au lieu de celle que j'ai maintenant?

    
posée jfoucher 31.07.2010 - 23:59
la source

16 réponses

684

Selon un article sur debian-administration.org ,

  

Si les dépendances ont été modifiées sur l’un des packages que vous avez installés afin qu’un nouveau package soit installé pour effectuer la mise à niveau, celui-ci sera répertorié comme "conservé".

Solution prudente 1:

La solution prudente consiste à exécuter sudo apt-get install <list of packages kept back> . Dans la plupart des cas, cela permettra aux paquets retenus de mettre à niveau avec succès.

Solution prudente 2:

Par réponse de Pablo , vous pouvez exécuter sudo apt-get --with-new-pkgs upgrade et installer les paquets conservés.

Cela a l'avantage de ne pas marquer les paquets retenus comme étant "installés manuellement", ce qui pourrait forcer plus d'interventions de la part des utilisateurs (voir les commentaires).

Si la solution de Pablo vous convient, merci de la commenter. Sinon, veuillez commenter ce qui a mal tourné.

Solution agressive:

Une solution plus agressive consiste à exécuter sudo apt-get dist-upgrade , ce qui forcera l’installation de ces nouvelles dépendances.

Mais dist-upgrade peut être très dangereux . Contrairement à la mise à niveau , elle supprimer les packages pour résoudre des situations de dépendance complexes. Contrairement à vous, APT n'est pas toujours assez intelligent pour savoir si ces ajouts et ces suppressions pourraient causer des ravages.

Donc, si vous vous trouvez dans un endroit où la "solution prudente" ne fonctionne pas, dist-upgrade peut fonctionner ... mais vous feriez probablement mieux d’apprendre un peu plus sur APT et résoudre les problèmes de dépendance "à la main" en installant et en supprimant les packages au cas par cas.

Pensez-y comme si vous répariez une voiture ... si vous avez le temps et que vous avez une clé, vous aurez l'esprit tranquille en lisant et en faisant vous-même la réparation. Si vous vous sentez chanceux, vous pouvez déposer votre voiture avec votre cousine dist-upgrade et espérer qu'elle connaît ses affaires.

    
réponse donnée mac9416 01.08.2010 - 00:15
la source
465

Chaque fois que vous recevez de la commande apt-get upgrade le message

The following packages have been kept back:

puis pour mettre à jour un ou tous les paquets conservés, sans effectuer une mise à niveau de la distribution (c'est ce que dist-upgrade fait, si je me souviens bien) consiste à lancer la commande:

apt-get install <list of packages kept back>

cela résoudra les problèmes non résolus et demandera d’installer des paquets supplémentaires, etc., comme cela a été expliqué par d’autres réponses.

    
réponse donnée user88285 08.09.2012 - 11:14
la source
169

apt-get dist-upgrade est dangereux pour un environnement stable,

  1. mauvais réglage source.list et vous vous retrouvez avec ubuntu cassé.
  2. vous pourriez avoir une application entière mise à niveau vers la version que vous ne voulez pas.

Cas d'utilisation: mise à niveau du noyau conservée, vous souhaitez simplement mettre à niveau le noyau, ne souhaitez pas mettre à niveau toute la distribution.

Une meilleure façon de gérer les colis conservés:

sudo aptitude

Si vous avez conservé votre paquet, vous devriez voir les paquets pouvant être mis à niveau en haut de la liste.

  • Hit + sur cette liste
  • Appuyez deux fois sur g
  • Répondez à debconf si demandé
  • Appuyez sur retour pour continuer
  • Appuyez sur Q
  • Appuyez sur Oui

Votre paquet gardé installé.

    
réponse donnée mudy 24.12.2010 - 01:43
la source
50

Pourquoi ne pas essayer cette réponse à Unix SE :

sudo apt-get --with-new-pkgs upgrade
  

Cela permet d’installer de nouveaux paquets. Il vous permettra de savoir quels paquets seront installés et vous demandera avant de procéder à l'installation.

Commande apt ( alternative conviviale à apt-get ) partagez cette option apt-get .

Utiliser plutôt apt install <pkg> marquera pkg comme "installé manuellement" !! Pour le marquer à nouveau comme "installé automatiquement", utilisez apt-mark auto <pkg> (voir aussi la sous-commande showmanual ). Plus d'infos sur cette réponse .

    
réponse donnée Pablo Bianchi 20.12.2016 - 21:16
la source
30

Il y a normalement deux raisons pour lesquelles vous pouvez voir ce message.

Si la mise à niveau du programme (via sudo apt-get upgrade ) entraînerait l’ajout ou la suppression de paquets, le programme sera alors bloqué. Vous pouvez utiliser sudo apt-get dist-upgrade dans ce cas, qui proposera alors d'ajouter ou de supprimer les programmes supplémentaires.

C'est assez courant et généralement pas un problème. De temps en temps (particulièrement pendant un alpha Ubuntu), un dist-upgrade proposera de supprimer beaucoup d'autres programmes, auquel cas vous voudrez probablement l'annuler.

Si le programme dépend de packages ou de versions qui ne sont pas disponibles, le programme sera bloqué. Vous ne pouvez vraiment rien faire d'autre que d'attendre dans ces circonstances, car le paquet est fondamentalement désinstallable. Cela peut se produire lorsque des packages sont ajoutés au référentiel dans le désordre, lorsqu'un package est renommé ou lorsqu'un package cesse de fournir un package virtuel.

    
réponse donnée jbowtie 01.08.2010 - 00:16
la source
18

Très probablement, ces paquets sont retenus car leur installation créerait des incohérences de dépendance. Cela peut être dû au fait que vous utilisez des archives sous un développement actif, ppas, ou parce que le miroir que vous utilisez n'est pas complètement mis à jour.

Dans le dernier cas, attendez, lorsque les dépendances seront résolues, il sera installé la prochaine fois.

Modifier:

Il existe une autre possibilité, les paquets peuvent être retenus s’ils sont mis en attente ou s’ils sont épinglés.

    
réponse donnée txwikinger 01.08.2010 - 00:17
la source
16

Vous pouvez également essayer:

sudo aptitude safe-upgrade .

Il est plus sûr que full-upgrade (nommé à l'origine dist-upgrade) car "les paquets ne seront pas supprimés à moins qu'ils ne soient inutilisés".

De man aptitude :

  

safe-upgrade

     

Met à niveau les packages installés vers leur version la plus récente. installée   les paquets ne seront pas supprimés, sauf s'ils sont inutilisés /.../ Packages   qui ne sont pas actuellement installés peuvent être installés pour résoudre   dépendances sauf si l'option de ligne de commande --no-new-installs est   fourni.

    
réponse donnée Afilu 12.08.2014 - 10:02
la source
9

Cela est généralement dû au fait que le package a ajouté une dépendance et que la mise à niveau ne veut pas l’ajouter sans votre permission.

Si vous exécutez:

sudo apt-get install gimp gimp-data libgegl-0.0-0 libgimp2.0

Ensuite, les nouvelles versions doivent être installées avec leur nouvelle dépendance.

    
réponse donnée John Lawrence Aspden 27.12.2012 - 20:20
la source
7

J'ai constaté qu'aptitude fait un meilleur travail de mise à niveau des paquets si les versions diffèrent légèrement. J'ai eu une situation comme celle-ci:

[email protected]:/etc/apt$ apt-cache policy gzip
gzip:
  Installed: 1.3.5-15
  Candidate: 1.3.5-15+etch1
  Version table:
     1.3.5-15+etch1 0
        500 http://archive.debian.org etch/main Packages
 *** 1.3.5-15 0
        100 /var/lib/dpkg/status

Cela a permis à apt-get de retenir la mise à jour, mais aptitude a tout mis à jour. Je ne sais pas quel algorithme est utilisé pour déterminer si un paquet doit être mis à jour ou non. Je suppose que ces deux versions avaient la même version, seulement un «qualificatif» différent. Mais de toute façon, apt-get ne le mettrait pas à jour, mais aptitude le ferait.

    
réponse donnée Alexander Torstling 02.05.2012 - 22:48
la source
7

Cela a fonctionné pour moi

sudo aptitude full-upgrade
    
réponse donnée Singh 22.03.2013 - 12:40
la source
3

J'ai rencontré ce problème quand un nouveau noyau a été publié. (Peut-être parce que j'ai des mises à jour instables activées.) J'ai trouvé le moyen le plus simple de procéder à l'installation via l'installateur graphique d'Ubuntu ( update-manager ).

    
réponse donnée Kazark 16.11.2011 - 21:07
la source
3

Dans mon cas, les paquets retenus étaient ceux liés à linux-headers et au noyau. Je suis arrivé à cela en essayant de résoudre un problème avec un point d’exclamation rouge dans la zone de notification et de ne pas pouvoir mettre à jour les paquets.

Pour le résoudre, je n’ai pas eu besoin d’utiliser dist-upgrade ni de manuel apt-get install xxx .

Ce que j'ai fait et aidé a été simple et propre :

sudo apt-get update
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get upgrade

J'ai dû confirmer manuellement la mise à jour de Grub et sa configuration.

Ensuite, je viens de travailler avec l'ordinateur pendant un moment, puis le dialogue de mise à jour standard est apparu, y compris la section "Ubuntu base" avec le noyau et les liens connexes. La mise à jour a été effectuée sans aucun problème et je ne vois plus de paquets retenus.

En outre, il est très important de garder à l’esprit que ces mises à jour * buntu, y compris les mises à jour du noyau, sont sensibles à la mise en veille prolongée . machine et effectuer les étapes ci-dessus.

Alors peut-être que ce serait juste suffisant?!

(la situation décrite ici est liée à mon Xubuntu 15.10 à la fin de décembre 2015)

    
réponse donnée crysman 29.12.2015 - 15:01
la source
2

J'ai rencontré ce problème en utilisant synaptic car il semblait se bloquer, et pour essayer de résoudre ce problème, j'ai redémarré et essayé à nouveau.

Ensuite, j'ai découvert un message informatif dans le paquet avec des instructions post-installation pour moi.

J'ai dû cliquer sur " détails ", puis sur " q " pour lire le message, puis les choses se sont déroulées normalement.

    
réponse donnée Eliptical view 03.08.2016 - 08:41
la source
2

Cela ressemble à la bonne façon de réinstaller les paquetages conservés:

apt-get install --reinstall libjpeg-progs

Au moins, cela a fonctionné pour moi quand libjpeg-progs était bloqué après la mise à niveau d'Ubuntu 14.04 à 16.04. Je suis sûr que vous pouvez faire la même chose avec toute autre application conservée, par ex. gimp .

Source: lien

    
réponse donnée Stephan Henningsen 29.08.2016 - 08:58
la source
1

En réalité, le commutateur dont vous avez besoin est dselect-upgrade , qui installe / supprime les dépendances pour l'ensemble de packages concerné.

    
réponse donnée Johnny 29.02.2012 - 09:52
la source
0

J'ai lu tous les articles et constaté qu'il existe de nombreuses explications intéressantes. Je les essayais tous mais je n'ai pas eu de résultats complets. J'ai un problème avec mysql-utilities que je ne pouvais pas mettre à jour. La mise à jour a été proposée par le système.  Donc, je veux montrer quelques étapes pour le faire. Bien sûr, je vais répéter à certains moments tous les postes susmentionnés. Voici mon erreur, oui je l'ai trouvé par des messages déjà existants, mais que dois-je faire ensuite?

La prochaine étape est:

sudo apt-get --purge remove mysql-utilities

Les résultats que nous pouvons voir dans l'image ci-dessous. Je retire le paquet et vérifie cela par la commande:

sudo apt-get -f install

Résultats - Bien! Plus tard, j'ai installé cette nouvelle version du package correctement.

De cette façon, je pense que cela peut aider un plus grand nombre de nouvelles personnes car avoir d'autres paquets nous permet de suivre les mêmes étapes.

Une fois, je suis désolé, quand j'ai répété à certains endroits d'autres articles.

    
réponse donnée Vasyl Lyashkevych 26.12.2017 - 00:59
la source

Lire d'autres questions sur les étiquettes