apt dit que les paquets ont été conservés, que faire?

22

La sortie de apt-get upgradeest:

The following packages have been kept back:
certbot python-acme python-certbot python-certbot-apache python-cryptography python-openssl

Qu'est-ce que ça veut dire? Dois-je agir? Si oui, quoi?

Jarle Hammen Knudsen
la source

Réponses:

36

Solution rapide et FACILE:

J'ai eu le même problème, plusieurs fois. Ne pas faire d' sudo apt-get dist-upgradeabord. Très important. **** REMARQUE: Cette solution est destinée aux machines basées sur Debian mais ne fonctionnera pas sur KDE Neon . Pour mettre à jour KDE Neon, vous devez utiliser sudo pkcon update. ****

Pourquoi?

Cela peut rendre votre système très instable, les programmes peuvent se bloquer et vous pouvez perdre beaucoup de fonctionnalités dans votre système d'exploitation.

Vous DEVEZ installer chaque paquet individuellement, CEPENDANT , pendant ce processus, d'autres dépendances seront également installées automatiquement et votre problème sera résolu en quelques minutes.

Je n'ai eu aucun problème avec la solution suivante. C'est assez rapide et facile.


Tout d'abord, procédez comme suit:

apt list --upgradable

  • Cela affichera une liste de packages pouvant être mis à niveau.

Ensuite, faites ceci:

  • Commencez au début de la liste avec le premier package et tapez:

sudo apt-get install package-name-here

  • Cela se déroulera à travers le processus d'installation et les dépendances pull / install.

Une fois ce processus terminé, procédez comme suit:

apt list --upgradable

  • Cela montrera à nouveau quels packages peuvent être mis à niveau. Votre liste de packages devrait maintenant diminuer. Suivez la liste des packages et tapez apt list --upgradableaprès chaque installation de package. Cela ne devrait prendre que quelques minutes.

Finalement:

sudo apt-get autoclean

sudo apt-get update && sudo apt-get dist-upgrade

Si cette solution a fonctionné pour vous, n'oubliez pas de voter pour que la bonne solution soit disponible pour les autres et figure en tête de liste des réponses.

Si pour une raison quelconque, cette solution ne fonctionne pas pour vous, veuillez consulter la réponse de l'utilisateur GAD3R ci-dessous. C'est aussi une bonne solution.

Merci.

Gregory Smitherman
la source
1
Pour moi, le paquet était ubuntu-minimal. Vos instructions ont parfaitement fonctionné.
DeanM
N'utilisez pas cette solution si vous utilisez KDE Neon.
Gregory Smitherman du
11

Qu'est-ce que ça veut dire?

The following packages have been kept back:

La réponse est ici

Cela signifie qu'il existe de nouvelles versions de ces packages qui ne seront pas installées pour une raison quelconque. Les raisons possibles sont des dépendances brisées (un package dont il dépend n'a pas de version disponible en téléchargement) ou de nouvelles dépendances (le package dépend des nouveaux packages depuis la dernière version).

Dois-je agir?

Vous devez utiliser dist-upgradepour installer les nouvelles dépendances et mettre à niveau les packages:

sudo apt-get dist-upgrade

Le problème peut être résolu en exécutant dist-upgradesinon vous devez:

Corrige les dépendances cassées

sudo apt-get -f install 

Supprimez certains packages qui ne sont plus installés sur votre système:

sudo apt-get autoclean

Mettez le paquet souhaité en attente:

echo "<package_name> hold" | dpkg --set-selections

Reconfigurez le package nommé:

dpkg-reconfigure <package_name>
GAD3R
la source
3

De cette réponse Unix SE :

Tout d'abord, comme mentionné ci-dessus, veuillez NE PAS mettre à niveau un système de production! Bien que la mise à niveau dist "résoudra" les paquets conservés, ce n'est certainement pas la solution à ce problème et vous causera probablement plus de chagrin que de bien si vous l'exécutez sans en connaître les implications sur votre système.

Si la mise à niveau d'un package nécessite l'installation de packages supplémentaires, il sera "conservé" lors de l'exécution sudo apt-get upgrade.

Comme mentionné ci-dessus, vous pouvez installer ces packages "conservés" manuellement en exécutant explicitement, sudo apt-get install [paste kept back packages here]mais cela marquera ces packages comme "installés manuellement", ce qui n'est souvent pas ce que nous voulons.

Pour installer automatiquement les packages supplémentaires nécessaires à la mise à niveau des packages "conservés" sans marquer les packages "conservés" comme installés manuellement, exécutez-le sudo apt-get --with-new-pkgs upgrade.

Brian Heese
la source
Plus d'informations --with-new-pkgset les effets secondaires d'autres alternatives ici .
Pablo A
2

J'ai inclus cette réponse dans mon blog. Si vous voulez voir que vous pouvez y aller depuis ce lien .

L'erreur ci-dessus est très courante dans le terminal Ubuntu lorsque vous essayez de mettre à niveau ( apt-get upgrade). Cela se produit généralement car les dépendances d'un package que vous installez ont changé. Pour mettre à niveau, vous devez d'abord les mettre à niveau. Il est donc très simple de résoudre ce problème. Vous pourrez voir les packages qui sont restés en dessous de ce message d'erreur. à titre d'exemple, je peux voir les packages suivants dans la liste:

gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software

Ne vous contentez pas de taper sudo apt-get dist-upgradeIl est très dangereux car il installe toutes les mises à jour en attente. Cela pourrait amener votre environnement de travail à un état très instable.

Par conséquent, mon avis est d'utiliser le célèbre

sudo apt-get install [package]

Vous pouvez remplacer [package]par n'importe quel package dans le message d'erreur. Vous pouvez également les mettre tels quels sous forme de liste (il suffit de les copier-coller). À titre d'exemple dans mon cas, je peux entrer

sudo apt-get install gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software

Si vous voulez faire

sudo apt-get dist-upgrade

pour une raison quelconque, assurez-vous simplement d'inspecter la liste des packages en utilisant l'option simulate -s( sudo apt-get -s dist-upgrade), ou sans l' -soption, vous pouvez terminer l'exécution avant d'accepter. (vous pouvez toujours choisir l'option non)

Dimuth Tharaka Menikgama
la source
2

Récemment, une mise à jour de sécurité Debian a introduit quelques nouvelles dépendances. Dans ce cas, le linux-imagepaquet a commencé à exiger linux-firmware, entre autres. Ils ont donc été retenus et non installés par unattended-upgrade. Après quelques tests et confirmation, j'ai pu installer sélectivement uniquement ces packages, sans toucher aux autres mises à jour en attente:

apt-get -yy install $(apt-get -s upgrade | sed '1,/kept back/d;/will be upgraded/,$d')

Dick Visser
la source
1

Cet article résume bien pourquoi cela se produit:

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 répertorié comme "conservé".

La solution à cela est de les installer explicitement avec

sudo apt install [packages]

Vous voudrez probablement marquer ces packages comme installés automatiquement, sauf si vous vous souciez d'eux et pas seulement pour satisfaire les dépendances.

sudo apt-mark auto [packages]

Pour éviter que cela ne se produise en premier lieu, je recommande d'utiliser

sudo apt --with-new-pkgs upgrade

pour mettre à niveau les packages à l'avenir, ce qui permet l'installation de nouveaux packages pour satisfaire les changements de dépendances.

Karl Bartel
la source
Deux pouces pour --with-new-pkgs! Et permettez-moi de souligner encore une fois que, " NE PAS mettre à niveau dist n'importe quel système de production! Bien que la mise à niveau dist" résoudra "les paquets conservés, ce n'est certainement pas la solution à ce problème et vous causera probablement plus de chagrin que de bien si vous exécutez-le sans connaître les implications sur votre système. "
xpt