web-dev-qa-db-fra.com

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

Je viens d'ajouter un référentiel 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 la version actuelle?

829
jfoucher

Selon n article sur debian-administration.org ,

Si les dépendances ont changé sur l'un des packages que vous avez installés de sorte qu'un nouveau package doit être installé pour effectuer la mise à niveau, il sera alors répertorié comme "gardé en arrière".

Solution prudente 1:

Per réponse de Pablo , vous pouvez exécuter Sudo apt-get --with-new-pkgs upgrade et il installera les packages conservés.

Cela présente l'avantage de ne pas marquer les paquets conservés comme "installés manuellement", ce qui pourrait forcer davantage les utilisateurs à intervenir plus tard (voir les commentaires).

Si la solution de Pablo fonctionne pour vous, faites-la passer au vote supérieur. Si non, veuillez commenter ce qui a mal tourné.

Solution prudente 2:

La solution prudente consiste à exécuter Sudo apt-get install <list of packages kept back>. Dans la plupart des cas, cela donnera aux paquets conservés ce dont ils ont besoin pour réussir leur mise à niveau.

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 assez dangereux . Contrairement à la mise à nivea il peut supprimer des 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 suppressions pourraient causer des dégâts.

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'en apprendre un peu plus sur APT et en résolvant 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 êtes maniable avec une clé, vous aurez une tranquillité d'esprit en lisant et en réparant vous-même. Si vous avez de la chance, vous pouvez déposer votre voiture avec votre cousine dist-upgrade et espérer qu'elle connaisse ses affaires.

845
Michael Crenshaw

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

The following packages have been kept back:

puis mettre à jour un ou tous les paquets gardés en arrière, sans faire de mise à jour de distribution (c'est ce que fait dist-upgrade, si mes souvenirs sont exacts):

apt-get install <list of packages kept back>

cela résoudra les problèmes qui ont été conservés et demandera l'installation de paquets supplémentaires, etc., comme expliqué par d'autres réponses.

488
user88285

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

  1. mauvais paramètre source.list et vous vous retrouvez avec ubuntu en panne.
  2. vous pouvez obtenir une application complète mise à niveau vers une version que vous ne voulez pas.

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

Meilleure façon de gérer les colis gardés:

Sudo aptitude

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

  • Hit + sur cette liste
  • Hit g deux fois
  • Répondre à debconf si demandé
  • Appuyez sur Retour pour continuer
  • Appuyez sur Q
  • Presse oui

Votre paquet conservé est installé.

173
mudy

Pourquoi n'essayez-vous pas cette réponse Unix SE :

Sudo apt-get --with-new-pkgs upgrade

Cela permet d'installer de nouveaux packages. Il vous indiquera quels paquets seraient installés et vous demandera avant de procéder à l'installation.

apt commande ( alternative conviviale à apt-get) partager cette option apt-get .

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

128
Pablo Bianchi

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îne l’ajout ou la suppression de packages, le programme est alors retenu. Vous pouvez utiliser Sudo apt-get dist-upgrade dans ce cas, qui vous proposera ensuite d'ajouter ou de supprimer les programmes supplémentaires.

Ceci est assez commun et généralement pas un problème. De temps en temps (particulièrement lors d'un alpha d'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 retenu. Vous ne pouvez vraiment rien faire d'autre que d'attendre dans ce cas, 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.

32
jbowtie

Vous pouvez aussi essayer:

Sudo aptitude safe-upgrade.

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

De man aptitude:

mise à niveau sûre

Met à niveau les packages installés vers leur version la plus récente. Les packages installés ne seront supprimés que s'ils sont inutilisés /.../ Les packages qui ne sont pas actuellement installés peuvent être installés pour résoudre les dépendances, à moins que l'option de ligne de commande --no-new-installs soit fournie.

23
Afilu

Très probablement, ces paquets sont retenus car leur installation créerait des incohérences de dépendance. Cela peut se produire si vous utilisez des archives en cours de 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.

Edit:

Il existe une autre possibilité: les paquets peuvent être retenus s’ils sont suspendus ou épinglés.

20
txwikinger

Cela est généralement dû au fait que le paquet a ajouté une dépendance et que la mise à niveau ne veut pas l'ajouter pour vous sans autorisation.

Si vous courez:

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.

9

Cela a fonctionné pour moi

Sudo aptitude full-upgrade
8
Singh

J'ai trouvé qu'aptitude faisait un meilleur travail pour mettre à jour des paquets si les versions diffèrent légèrement. J'ai eu une situation comme celle-ci:

me@compy:/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 l'a mise à jour correctement. 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-là avaient la même version, mais un "qualificatif" différent. Mais dans tous les cas, apt-get ne le mettrait pas à jour, mais aptitude le ferait.

7

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

3
Kazark

Dans mon cas, les paquets retenus étaient ceux liés à linux-headers et au noyau. J'y suis parvenu en essayant de résoudre un problème de 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 manuel apt-get install xxx .

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

Sudo apt-get update
Sudo apt-get autoremove
Sudo apt-get autoclean
Sudo apt-get upgrade

Je devais confirmer manuellement la mise à jour de Grub et sa configuration.

Ensuite, je viens de travailler avec l'ordinateur pendant un moment, puis un dialogue de mise à jour standard est enfin apparu, y compris la section "Base Ubuntu" avec le noyau et les éléments associés. La mise à jour a été effectuée sans problème et je ne vois plus aucun paquet bloqué.

En outre, il est très important de garder à l'esprit que ces mises à jour * buntu, notamment les mises à jour du noyau sont sensibles à l'hibernation - J'ai ce problème plusieurs fois et je le résous toujours en redémarrant l'ordinateur et en effectuant les étapes ci-dessus.

Alors peut-être que cela suffirait?!

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

3
crysman

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 package avec des instructions de post-installation pour moi.

J'ai dû appuyer sur "détails", puis sur "q" pour quitter après avoir lu le message, puis les choses se sont déroulées normalement.

2
Elliptical view

Cela ressemble à la bonne façon de réinstaller le paquetage sauvegardé:

apt-get install --reinstall libjpeg-progs

Au moins, cela a fonctionné pour moi lorsque 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 n'importe quelle autre application conservée, par exemple. gimpname__.

Source: https://ubuntuforums.org/showthread.php?t=2321702&p=13476183#post1347618

2
Stephan Henningsen

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

1
Johnny

J'ai lu tous les articles et découvert qu'il existe de nombreuses explications intéressantes. Je les essayais tous mais je n'ai aucun résultat complet. J'ai un problème avec mysql-utilities que je n'ai pas pu 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 dans quelques instants tous les messages susmentionnés. Voici mon erreur, oui je l'ai trouvé par des postes déjà existants, mais que dois-je faire ensuite? enter image description here

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 paquet correctement. enter image description here

De cette façon, je pense que cela peut aider davantage de nouvelles personnes, car avec d'autres packages, nous pouvons suivre les mêmes étapes.

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

0
Vasyl Lyashkevych