1258 votes

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

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 de pouvoir utiliser la dernière version au lieu de celle que j'ai actuellement ?

6 votes

Quel message de merde ! Pourquoi le système d'exploitation ne peut-il pas faire ce qu'il faut ?

1444voto

Dennis G. Points 355

Según un article sur debian-administration.org ,

Si les dépendances ont changé pour l'un des paquets que vous avez installés et qu'un nouveau paquet doit être installé pour effectuer la mise à niveau, il sera répertorié comme "kept-back".

Solution prudente 1 :

Par La réponse de Pablo vous pouvez exécuter sudo apt-get --with-new-pkgs upgrade et il installera les paquets keep-back.

Cela a l'avantage de ne pas marquer les paquets conservés comme étant "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'upvoter. Sinon, veuillez commenter ce qui n'a pas fonctionné.

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 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.

Pero dist-upgrade peut être assez dangereux . Contrairement à la mise à niveau il peut supprimer des paquets pour résoudre des situations de dépendance complexes. Contrairement à vous, APT n'est pas toujours assez intelligent pour savoir si ces ajouts et retraits peuvent causer des ravages.

Donc si vous vous trouvez dans un endroit où la "solution prudente" ne fonctionne pas, dist-upgrade mai 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 les paquets au cas par cas.

Pensez-y comme à la réparation d'une voiture... si vous avez le temps et que vous savez manier une clé, vous aurez l'esprit tranquille en vous documentant et en effectuant la réparation vous-même. Si vous avez de la chance, vous pouvez confier votre voiture à votre cousin. dist-upgrade et j'espère qu'elle connaît son sujet.

212 votes

Comme il s'agit d'un besoin de réponse accepté, il faut vraiment le mettre à jour pour avertir de l'utilisation de dist-upgrade sur un système stable, comme l'ont souligné plusieurs des autres réponses ci-dessous. Personnellement, je pense qu'il existe une réponse plus simple/sûre qui doit être promue : apt-get install <liste de pkgs>

10 votes

Cas, dois-je ajouter qu'il peut être dangereux d'exécuter un dist-upgrade sur un système stable ? Pourquoi exactement cela est-il dangereux ? (Honnêtement, je ne connais pas si bien que ça l'apt).

23 votes

Il existe un Réponse à une erreur de serveur qui explique dist-upgrade de manière un peu plus détaillée. Je pense qu'il est juste utile de préciser (sans être dangereux en tant que tel) qu'il peut mettre à niveau l'ensemble du système, ce qui peut être au-delà de ce que l'utilisateur attend/souhaite, c'est-à-dire que dans l'exemple du PO, ils se demandent pourquoi gimp est retenu.

589voto

user88285 Points 5907

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

The following packages have been kept back:

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

apt-get install <list of packages kept back>

Cela résoudra les problèmes de maintien en arrière et demandera d'installer des paquets supplémentaires, etc. comme l'ont expliqué d'autres réponses.

Voir aussi : Pourquoi utiliser apt-get upgrade au lieu d'apt-get dist-upgrade ?

3 votes

Lorsque les paquets sont retenus de cette façon et que je suis manuellement apt-get upgrade <list of packages> si je refais apt-get upgrade il indiquera que les paquets en question ne sont plus nécessaires et que je peux les utiliser. apt autoremove pour les enlever, ce que j'ai fait, et ensuite un dernier apt-get upgrade et ils ne sont plus listés comme étant retenus... Très bizarre. Une idée ?

0 votes

Hace apt-get install supprime également les paquets lorsque cela est nécessaire pour résoudre les situations de dépendance délicates, ou bien faut-il exécuter un programme séparé apt-get remove pour accomplir cette partie du processus de mise à niveau ?

0 votes

@cram2208 Je crois que c'est le comportement attendu. Les paquets qui ont été "automatiquement installés et [...] ne sont plus nécessaires" sont les versions précédentes des paquets mis à niveau, qui ne sont maintenant plus nécessaires. apt autoremove supprime ensuite ces dépendances inutilisées.

315voto

Pablo Bianchi Points 10158

Essayez cette réponse d'Unix SE :

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

Cela permet d'installer de nouveaux paquets. Il vous fera savoir quels paquets seront installés et vous invitera à le faire avant de procéder à l'installation.

apt commande ( alternative conviviale a apt-get ) partagent cette option.

Utilisation de apt install <pkg> au lieu de cela, le pkg sera marqué comme "installé manuellement" ! Pour le marquer à nouveau comme "installé automatiquement", utilisez apt-mark auto <pkg> (voir également la sous-commande showmanual ). Plus d'informations sur cette réponse .

27 votes

+1 car il n'a pas l'effet secondaire de provoquer le marquage des paquets comme étant installés manuellement.

3 votes

Note à l'attention de ceux qui lisent mon commentaire ci-dessus : ne pas avoir l'effet secondaire de marquer comme installé manuellement est une bonne chose. J'aime cette réponse.

0 votes

Donc, si vous utilisez sudo apt-get --with-new-pkgs upgrade sans en cours d'exécution apt-mark auto <pkg> tout ira-t-il bien ? La deuxième commande n'est-elle nécessaire que si vous faire choisir d'installer manuellement les paquets retenus ?

187voto

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

  1. un mauvais paramétrage de source.list et vous vous retrouvez avec un ubuntu cassé.
  2. vous risquez de voir toute l'application mise à jour vers une version dont vous ne voulez pas.

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

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

sudo aptitude

Si vous avez conservé le paquet arrière, vous devriez voir les Paquets Upgradables en haut de la liste.

  • Appuyez sur + sur cette liste
  • Appuyez deux fois sur g
  • Répondre aux questions sur debconf si elles sont posées
  • Appuyez sur la touche retour pour continuer
  • Appuyez sur Q
  • Appuyez sur oui

Votre paquet de maintien en arrière installé.

41 votes

apt-get dist-upgrade n'est dangereux que si vous avez de mauvais référentiels dans /etc/apt/sources.list* . Il est bon de savoir que dist-upgrade mises à niveau tous mais avec les dépôts par défaut, cela devrait aller. Non en utilisant dist-upgrade pourrait être dangereux, car vous pourriez manquer des mises à jour de sécurité.

11 votes

apt-get dist-upgrade puede supprimer 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 La commande installera n'importe quel paquet de n'importe quelle source de logiciel qui est activée ; dist-upgrade n'est pas unique de cette manière. En outre, l'utilisation aptitude pour effectuer une quelconque opération, du moins sur amd64, est bien plus dangereux que d'exécuter apt-get dist-upgrade dans une version où bug 831768 n'est pas fixé.

0 votes

Pour moi, il était plus facile (machine locale avec X en cours d'exécution) d'ouvrir synaptic et de forcer la mise à jour du paquet. Pour une raison quelconque, il ne semble pas apparaître du tout là où vous l'avez décrit dans synaptic.

40voto

UnkwnTech Points 21942

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, alors le programme sera retenu. Vous pouvez utiliser sudo apt-get dist-upgrade dans ce cas, qui vous proposera alors d'ajouter ou de supprimer les programmes supplémentaires.

Cela est assez courant et ne pose généralement pas de problème. Occasionnellement (en particulier lors d'une alpha Ubuntu), un fichier dist-upgrade vous proposera de supprimer un grand nombre 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 retardé. 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.

7 votes

Existe-t-il un moyen de déterminer si le paquet retenu a besoin d'une dépendance qui ne peut pas être installée ou s'il est retenu parce que d'autres paquets en dépendent. J'ai de nombreux paquets bloqués et je pense que ces deux cas peuvent s'appliquer à mon système.

0 votes

Merci, la deuxième raison était le problème pour moi. Même apt-get dist-upgrade a refusé de l'installer. L'inspection du paquet avec aptitude a montré qu'il dépend d'un paquet qui n'est pas disponible. Je suppose que je vais devoir attendre.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X