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


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?


719
2017-07-31 21:59


origine


Strictement parlant, je dirais que c'est un avertissement, pas une erreur. - Kazark


Réponses:


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, un nouveau package doit être installé pour effectuer la mise à niveau. Il sera alors répertorié comme "conservé".

Solution prudente 1:

La solution prudente est de courir sudo apt-get install <list of packages kept back>. Dans la plupart des cas, cela donnera aux paquets retenus ce dont ils ont besoin pour réussir la mise à niveau.

Solution prudente 2:

Par La réponse de Pablo, tu peux courir sudo apt-get --with-new-pkgs upgrade, et il installera les paquets conservés.

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

Si la solution de Pablo fonctionne pour vous, 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 assez dangereux. Contrairement à la mise à niveau cela pourrait retirer 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 peuvent causer des ravages.

Donc, si vous vous trouvez dans un endroit où la "solution prudente" ne fonctionne pas, dist-upgrade  mai travailler ... mais vous feriez probablement mieux d'en apprendre un peu plus sur APT et de résoudre les problèmes de dépendance "manuellement" 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 cousin dist-upgrade et j'espère qu'elle connaît ses affaires.


702
2017-07-31 22:15



Comme il s’agit d’une réponse acceptée, il faut vraiment la mettre à jour pour prévenir dist-upgrade sur un système stable, comme beaucoup d’autres réponses ci-dessous l’ont indiqué. Personnellement, je pense qu'il existe une réponse plus simple / plus sûre qui nécessite une promotion: apt-get install <liste des pkgs> - Cas
Cas, devrais-je juste ajouter qu'il pourrait être dangereux de lancer une mise à niveau distante sur un système stable? Pourquoi est-ce que c'est dangereux? (Honnêtement, je ne sais pas très bien tout ça.) - mac9416
Il y a un Réponse du serveur Cela explique la mise à niveau de manière un peu plus détaillée. Je pense qu'il vaut la peine de clarifier (pas dangereux en tant que tel) qu'il peut mettre à jour le système entier qui peut dépasser ce que l'utilisateur attend / c'est-à-dire dans l'exemple OP, ils se demandent pourquoi Gimp est retenu. - Cas
S'il vous plaît noter que sudo apt-get dist-upgrade peut aussi retirer paquets. Par conséquent, il est préférable de toujours consulter la liste des modifications qui seront apportées avant de les accepter, lors de l'exécution. sudo apt-get dist-upgrade. - Eliah Kagan
@EliahKagan Puis-je ajouter que même apt-get upgrade peut supprimer des paquets? Il le fera toujours quand il y aurait un conflit de version autrement. Penser à llvm3.6 contre. llvm3.6v5 (avec le "v5" signifiant qu'il a été compilé avec gcc 5). Ces deux ne peut pas coexister, seul l'un des deux peut être conservé sur le système. Donc oui dist-upgrade peut supprimer certains paquets aussi, mais ce n'est pas seulement dist-upgrade cela ferait cela; dans certaines circonstances, upgrade serait aussi bien. - syntaxerror


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

The following packages have been kept back:

puis mettre à niveau un ou tous les paquets conservés, sans effectuer de mise à niveau de la distribution (c'est ce que dist-upgrade fait, si je me souviens bien) est d'émettre 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.


468
2017-09-08 09:14



Lorsque les paquets sont conservés de cette façon et moi manuellement apt-get upgrade <list of packages>, si je refais apt-get upgrade, il listera les paquets en question comme n'étant plus requis et que je pourrai utiliser apt autoremove pour les supprimer, ce que je fais, puis un dernier apt-get upgrade et ils ne sont plus répertoriés comme conservés ... Très étrange. Des pensées? - cram2208
Est-ce que apt-get install également supprimer les paquets lorsque cela est nécessaire pour résoudre des situations de dépendance généralisées, ou devez-vous exécuter un apt-get remove commande pour accomplir cette partie du processus de mise à niveau? - mac9416
@ cram2208 Je crois que c'est le comportement attendu. Les packages "installés automatiquement et [...] devenus inutiles" sont les versions précédentes des packages mis à niveau, qui ne sont plus nécessaires. apt autoremove puis supprime ces dépendances inutilisées. - Alex
Si la mise à niveau nécessite l'installation d'un nouveau package, le package sera "conservé". Pensez d'abord à utiliser: sudo apt-get --with-new-pkgs upgrade qui ferait ne pas avoir d'effet secondaire en provoquant le marquage manuel des paquets - l --marc l
@ mac9416 oui. - jarno


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 obtenir l'application entière mise à niveau vers la version que vous ne voulez pas.

Cas d'utilisation: mise à niveau du noyau conservée, vous voulez juste mettre à jour le noyau, ne voulez pas mettre à jour la distribution entière.

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

sudo aptitude

Si vous avez conservé le paquet, vous devriez voir les paquets évolutifs en haut de la liste.

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

Votre paquet gardé installé.


170
2017-12-24 00:43



apt-get dist-upgrade n'est dangereux que si vous avez de mauvais dépôts dans /etc/apt/sources.list*. C'est bon d'être conscient que dist-upgrade mises à niveau tout les packages, mais avec les référentiels par défaut, ça devrait aller. ne pas en utilisant dist-upgrade pourrait être dangereux, car vous pourriez manquer des mises à jour de sécurité. - Flimm
apt-get dist-upgrade pouvez retirer ainsi que d'ajouter des paquets, mais ce n'est pas vraiment dangereux. Toute commande d'installation de paquet peut causer de sérieux dommages si vous avez des problèmes dans votre sources.list fichier! Un habitué apt-get upgrade commande installera tous les paquets de toute source de logiciel activée; dist-upgrade n'est pas unique de cette manière. En outre, en utilisant aptitude d'effectuer une opération du tout, au moins sur amd64, est beaucoup plus dangereux que de courir apt-get dist-upgrade, dans une version où bug 831768 n'est pas corrigé - Eliah Kagan
Pour moi, il était plus facile (machine locale avec X en cours d'exécution) d'ouvrir simplement synaptic et de forcer la mise à niveau du paquet. Pour une raison quelconque, il ne semblait pas du tout que vous décriviez en synaptique. - djvs
Aussi sudo aptitude safe-upgrade - msanford


Pourquoi vous n'essayez pas 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.

apt commander (alternative amicale à apt-get) partager ce apt-get option.

En utilisant apt install <pkg> au lieu de cela marquera pkg comme "manuellement installé" !! Pour le marquer à nouveau comme "automatiquement installé" utiliser apt-mark auto <pkg> (voir aussi la sous-commande showmanual). Plus d'informations sur cette réponse.


60
2017-12-20 20:16



+1, car il n'a pas d'effet secondaire en provoquant le marquage manuel des paquets. - ctrl-alt-delor
Notez à qui lit mon commentaire ci-dessus: ne pas avoir l'effet secondaire du marquage comme installé manuellement est une bonne chose. J'aime cette réponse. - ctrl-alt-delor
Donc, si vous utilisez sudo apt-get --with-new-pkgs upgrade  sans pour autant fonctionnement apt-mark auto <pkg>Tout ira bien? La deuxième commande est-elle nécessaire uniquement si vous faire choisir d'installer manuellement les paquets retenus? - mac9416
Oui. apt-mark auto <pkg> ne devrait être nécessaire que pour marquer un paquet comme étant automatiquement installé (ici la page de manuel). - Pablo Bianchi


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

Si mise à jour du programme (via sudo apt-get upgrade) ferait en sorte que les paquets soient ajoutés ou supprimés, puis le programme sera 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 commun 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 paquets 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 hors service, lorsqu'un package est renommé ou lorsqu'un package cesse de fournir un package virtuel.


30
2017-07-31 22:16



Existe-t-il un moyen de déterminer si le package mis en attente a besoin d'une dépendance qui ne peut pas être installée ou si elle est conservée car d'autres packages en dépendent. J'ai beaucoup de paquets tenus et je crois que ces deux cas peuvent s'appliquer sur mon système. - Jake
Merci, la deuxième raison était le problème pour moi. Même apt-get dist-upgrade refusé de l'installer. L'inspection du paquet avec aptitude a montré que cela dépend d'un paquet qui n'est pas disponible. Je suppose que je vais devoir attendre. - jlh


Très probablement, ces paquets sont bloqués 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 y a une autre possibilité, les paquets peuvent être retenus s'il y a un blocage sur eux, ou s'ils sont épinglés.


18
2017-07-31 22:17



Sur quoi vous basez-vous cette probabilité, sans savoir ce qu’il a fait d’une mise à jour d’apt-get ou d’un apt-get dist-upgrade (alt. Les aptitudes équivalentes)? - andol
c'est le problème le plus courant dans les questions de support et les bogues - txwikinger
D'accord. Vous devriez probablement attendre et vérifier apt_preferences. Cela est souvent dû aux archives de développement où les dépendances et les paquets disponibles changent très rapidement. Attendez qu'ils s'installent et que vous n'ayez pas besoin de dist-upgrade du tout. Si vous souhaitez toujours dist-upgrade, puis regardez les NOUVEAUX paquets à installer et les paquets à supprimer avant de continuer. - Umang
C'est mon cas parce que j'obtiens le message "restitué" en utilisant dist-upgrade - Postadelmaga
Dans les cas où ce problème est dû à un problème avec les préférences apt (épinglage), j'ai constaté que la réinstallation des paquets conservés m'a aidé à: apt-get install --reinstall <packages>. - tanius


Vous pouvez également essayer:

sudo aptitude safe-upgrade.

C'est plus sûr que full-upgrade (initialement nommé dist-upgrade) car "les paquets 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. 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.


18
2017-08-12 08:02





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 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
2017-12-27 19:20



Met à niveau des packages spécifiques (et leurs dépendances) sans l'engagement (risques) d'une dist-upgrade. - John Mee