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?
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.
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.
apt-get dist-upgrade
est dangereux pour un environnement stable,
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.
Votre paquet conservé est installé.
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 .
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.
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.
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.
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.
Cela a fonctionné pour moi
Sudo aptitude full-upgrade
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.
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
).
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)
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.
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. gimp
name__.
Source: https://ubuntuforums.org/showthread.php?t=2321702&p=13476183#post1347618
En réalité, le commutateur dont vous avez besoin est dselect-upgrade
qui installe/supprime les dépendances pour le jeu de paquetages concerné.
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?
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.
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.