web-dev-qa-db-fra.com

APT bloqué par une incompatibilité de version du noyau

Apt est apparemment incapable de faire quelque chose d'utile pour moi, donnant à plusieurs reprises des messages de cette forme:

dpkg: dependency problems prevent configuration of linux-server:
 linux-server depends on linux-image-server (= 3.2.0.37.44); however:
  Version of linux-image-server on system is 3.2.0.37.45.
 linux-server depends on linux-headers-server (= 3.2.0.37.44); however:
  Version of linux-headers-server on system is 3.2.0.37.45.
dpkg: error processing linux-server (--configure):
 dependency problems - leaving unconfigured

C’est fondamentalement le même problème que je ne peux installer aucun paquet (erreurs de dépendances de linux-server, linux-image-server) qui a été fermé Dupliquer en une réponse totalement inutile dans cette situation. Aucun des conseils de cette réponse très générique sur les dépendances n'aide.

Explicitement:

Sudo apt-get clean
Sudo apt-get autoclean
Sudo apt-get update

tous n'ont pas d'effet non. Tandis que

Sudo apt-get -f install
Sudo dpkg --configure -a
Sudo apt-get -u dist-upgrade
Sudo apt-get -o Debug::pkgProblemResolver=yes dist-upgrade

tous donnent une certaine forme du message d'erreur ci-dessus.

18
Leopd

Vous avez exécuté Sudo apt-get update et le problème persiste. Donc, vous avez probablement juste une version plus récente de linux-image-server et linux-headers-server que n’importe quel paquetage linux-server disponible à partir de vos sources logicielles configurées .

Cela peut se produire pendant un very court temps, même si vous utilisez le serveur central (ou plus longtemps en cas de problème de mise à jour). Je crois comprendre que cela peut se produire pendant de plus longues périodes si vous utilisez un miroir. Cela ne signifie pas que vous ne devriez pas utiliser de miroir - le serveur central (http://archive.ubuntu.com) est généralement très lent et les miroirs nationaux, régionaux ou autres sont beaucoup plus rapides.

Un recherche de paquet révèle que la version 3.2.0.37.45 des deux linux-image-server et linux-server existe pour Ubuntu 12.04. Donc, c'est probablement lié à votre miroir.

Voici quelques alternatives:

L'ignorer

Si vous pouvez utiliser le gestionnaire de paquets à d'autres fins, par exemple pour installer d'autres paquets, vous pouvez simplement ignorer ceci. Lorsque votre miroir sera mis à jour, vous obtiendrez probablement le package.

Ce n'est pas un problème de ne pas avoir le dernier paquetage linux-server, car c'est un méta-paquet qui ne fournit aucun logiciel réel. Il existe seulement pour qu'il puisse lister trois paquets en tant que dépendances , en s'assurant qu'ils restent installés:

Vous disposez déjà des dernières versions de linux-headers-server et linux-image-server. Mon hypothèse est qu'il s'agit d'un système 64 bits, c'est pourquoi aucun message concernant linux-generic-pae n'a été affiché. Il semble que tout va bien.

Toutefois:

  • Si le problème est empêchant la mise à jour et l'installation d'autres packages ne fonctionne pas (par opposition à montrant ces messages chaque fois que vous le faites, mais pas interférant avec), alors vous devriez appliquer une autre solution.
  • Vous pouvez également le faire si vous n'aimez pas tout le temps voir ces messages et que vous souhaitez vous en débarrasser.
  • C'est un peu étrange que vous n'obteniez pas ce package, même si vous utilisez un miroir légèrement en retard par rapport au serveur de téléchargement principal, car ce package est également fourni par http://security.ubuntu.com. Ce serveur doit toujours être activé dans /etc/apt/sources.list. Je recommande donc de vérifier pour vous assurer que cela est activé. Vous souhaiterez peut-être sauvegarder sources.list avant de le modifier (Sudo cp /etc/apt/sources.list /etc/apt/sources.list.old). Le problème peut également être une conséquence d'un proxy Web de mise en cache (si vous en utilisez un) avec des données obsolètes. (Les solutions ci-dessous vont contourner ça aussi.)

Passer à un autre serveur de téléchargement

J'imagine que vous utilisez un système serveur Ubuntu et que vous n'avez probablement pas d'interface graphique installée. Alors, voir:

Après avoir changé votre miroir, lancez:

Sudo apt-get update
Sudo apt-get upgrade
Sudo apt-get dist-upgrade

Si vous le souhaitez, vous pouvez restaurer votre serveur après la mise à jour de linux-server.

Téléchargez et installez manuellement le fichier de package .deb

Vous pouvez télécharger et installer manuellement le fichier .deb pour la dernière version du métapaquet linux-server dans Ubuntu 12.04.

cd à l'endroit où vous souhaitez télécharger le package.

S'il s'agit d'un système 64 bits, exécutez:

wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-server_3.2.0.23.25_AMD64.deb

S'il s'agit d'un système 32 bits, exécutez ceci à la place:

wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-server_3.2.0.23.25_i386.deb

(J'ai obtenu ces deux liens sur la page du tableau de bord pour le paquet source linux-meta dans Ubunt .)

Maintenant (pour les versions 64 bits et 32 ​​bits), exécutez cette commande pour installer le package:

Sudo dpkg -i linux-server_3.2.0.23.25_*.deb

(Ou commencez simplement à taper le nom du paquet et à l'utiliser Tab pour le compléter.)

Retirer le paquet

Puisqu'il s'agit d'un logiciel fournissant un métapaquet que vous avez déjà, vous pouvez supprimer le package. Ensuite, vous n'obtiendrez plus l'erreur. Vous pouvez le réinstaller ultérieurement si vous le souhaitez (vous pouvez exécuter périodiquement apt-get update && apt-cache policy linux-server pour voir si la nouvelle version est disponible).

Si vous souhaitez le supprimer, vous devez suivre deux étapes. La première consiste à désinstaller linux-server. la seconde est de s'assurer que les paquets ne seront pas automatiquement supprimés plus tard.

Les dépendances seront not seront supprimées immédiatement . Donc, peu importe laquelle de ces étapes vous faites en premier.

1. Désinstallez linux-server.

Pour désinstaller linux-server, exécutez simplement:

Sudo apt-get remove linux-server

2. Marquer ses dépendances comme installées manuellement

Pour indiquer à APT (le gestionnaire de packages) les packages que vous souhaitez installer même s'il ne reste plus rien qui les déclare comme une dépendance, marquez-les comme étant installés manuellement.

Pour ce faire, exécutez cette commande, s’il s’agit d’un système 64 bits:

Sudo apt-mark manual linux-image-server linux-headers-server

S'il s'agit d'un système 32 bits, lancez ceci à la place:

Sudo apt-mark manual linux-image-server linux-headers-server linux-generic-pae

(Vous devriez avoir apt-mark mais si vous ne pouvez pas installer de logiciel, vous pouvez utiliser apt-get install au lieu de apt-mark manual-- pour spécifier manuellement un package pour l'installation, qui sera marqué comme étant installé manuellement, même s'il était déjà installé.)

Source: Marquez un paquet deb comme utilisé, donc ce n'est pas suggéré pour le retrait automatique
(En particulier, réponse de Lekensteyn .)

20
Eliah Kagan

Si vous aviez une installation de mise à niveau complète de sécurité/automatique et automatique, cassée apt, vous pouvez être dans le même bateau que j'étais.

Je ne pouvais pas obtenir apt-get pour faire quoi que ce soit si des conseils complets/boot traditionnels ne fonctionnent pas J'ai supprimé manuellement les anciennes données du noyau. Ne supprimez pas le noyau courant, vérifiez avec 'uname -a'. J'ai enlevé avec 'Sudo rm /boot/-3.2.0-{23,24,25,26}-.

Ensuite, je devais exécuter 'Sudo apt-get remove linux-server' et 'Sudo apt-get install linux-server' pour corriger le désordre du problème de la moitié du noyau installé. Après tout cela, je pouvais enfin 'Sudo apt-get upgrade' et faire bouger les choses.

Pour faire bonne mesure, j’ai jeté dans une balise 'Sudo update-grub' et 'Sudo apt-get autoremove' afin de m'assurer que le menu de démarrage était précis et que les autres paquets avaient été nettoyés.

4
flickerfly

Dans la situation concernant Ubuntu 12.04, il était nécessaire d’installer manuellement linux-headers-server et linux-server (comme suggéré ci-dessus - je l’aurais commentée mais je n’ai pas encore ce privilège), puis apt-get remove linux-headers-virtual, qui ne semble plus exister sous forme de paquet 64 bits pour 12.04.

Sudo wget https://launchpad.net/ubuntu/+archive/primary/+files/linux-headers-server_3.2.0.64.76_AMD64.deb

0
user291949