Je viens d'ajouter un dépôt PPA pour la version de développement de GIMP, mais je reçois 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 résoudre ce problème afin d'utiliser la dernière version au lieu de celle que j'ai actuellement ?
Selon [un article sur debian-administration.org][1],
Si les dépendances ont changé pour l'un des paquets que vous avez installés de sorte qu'un nouveau paquet doit être installé pour effectuer la mise à niveau, il sera listé comme " kept-back ".
Solution prudente 1:
Selon la réponse de Pablo, vous pouvez exécuter sudo apt-get --with-new-pkgs upgrade
, et il installera les paquets conservés.
Cela a l'avantage de ne pas marquer les paquets conservés comme "installés manuellement", ce qui pourrait obliger l'utilisateur à intervenir plus tard (voir les commentaires).
Si la solution de Pablo fonctionne pour vous, veuillez l'approuver. Dans le cas contraire, veuillez expliquer ce qui n'a pas fonctionné.
Solution prudente 2:
La solution prudente consiste à exécuter sudo apt-get install <liste des paquets conservés>
. Dans la plupart des cas, cela donnera aux paquets conservés ce dont ils ont besoin pour réussir la 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 à jour, il peut supprimer des paquets pour résoudre des situations de dépendances 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 une situation où la "solution prudente" ne fonctionne pas, dist-upgrade
*peut fonctionner... mais vous feriez mieux d'en apprendre un peu plus sur APT et de résoudre les problèmes de dépendance "à la main" en installant et en supprimant des paquets au cas par cas.
Pensez-y comme à la réparation d'une voiture... si vous avez le temps et êtes habile avec une clé, vous aurez une certaine tranquillité d'esprit en vous documentant et en faisant la réparation vous-même. Si vous vous sentez chanceux, vous pouvez confier votre voiture à votre cousine dist-upgrade
et espérer qu'elle connaisse son métier.
[1] : https://debian-administration.org/article/69/Some_upgrades_show_packages_being_kept_back
[3] : https://askubuntu.com/questions/194651/why-use-apt-get-upgrade-instead-of-apt-get-dist-upgrade
Il y a normalement deux raisons pour lesquelles vous pouvez voir ce message.
Si la mise à jour du programme (via sudo apt-get upgrade
) entraîne l'ajout ou la suppression de paquets, alors le programme sera retenu. Vous pouvez utiliser sudo apt-get dist-upgrade
dans ce cas, qui proposera alors d'ajouter ou de supprimer les programmes supplémentaires.
Ceci est assez courant et ne pose généralement pas de problème. Occasionnellement (en particulier pendant une 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, alors le programme sera retenu. Dans ce cas, vous ne pouvez rien faire d'autre qu'attendre, puisque le paquet est fondamentalement désinstallable. Cela peut arriver lorsque des paquets sont ajoutés au référentiel dans le désordre, lorsqu'un paquet est renommé ou lorsqu'un paquet cesse de fournir un paquet virtuel.
Il est fort probable que ces paquets soient retenus car leur installation créerait des incohérences de dépendances. Cela peut se produire soit parce que vous utilisez des archives en développement actif, ppas, soit parce que le miroir que vous utilisez n'est pas complètement mis à jour.
Dans le dernier cas, attendez simplement, lorsque les dépendances seront résolues, ils seront installés la prochaine fois.
Edit:
Il y a une autre possibilité, les paquets peuvent être retenus s'il y a une mise en attente sur eux, ou s'ils sont épinglés.