yum installe kernel-devel différent de ma version du noyau

32

J'essaie d'installer le lecteur VMWare dans Fedora 19. Je suis confronté au problème que plusieurs utilisateurs ont rencontré, où VMware ne peut pas trouver les en-têtes du noyau. J'ai installé les packages kernel-headerset kernel-develvia yumet le fichier qui apparaît dans /usr/src/kernelsest:

3.12.8-200.fc19.x86_64

Cependant, quand je fais uname -rma version du noyau Fedora est:

3.9.5-301.fc19.x86_64

qui est une version différente. Cela semble vouloir dire que lorsque je pointe le lecteur VMware sur le chemin des noyaux, le message d'erreur suivant s'affiche:

C header files matching your running kernel were not found.  
Refer to your distribution's documentation for installation instructions.

Comment puis-je installer le bon noyau et où devrais-je pointer VMware s'il ne l'est pas /usr/src/kernels/<my-kernel>?

Fantastique M. Fox
la source
Juste curieux ... Pourquoi n'utilisez-vous pas le dernier noyau dans Fedora 19?
rickhg12hs
Pas par ma propre décision. J'ai installé depuis le site la dernière version que j'ai pu. Est-il possible de mettre à jour le noyau?
Fantastique M. Fox
La plupart maintiennent tous les packages à jour à l'aide du gestionnaire de packages ou en tant qu'utilisateur root à yum updatepartir d'une ligne de commande. Fait fréquemment et avec une connexion Internet décente, cela ne prend pas longtemps, mais vous avez un peu de rattrapage à faire. Pour utiliser le nouveau noyau, vous devrez redémarrer une fois la mise à jour terminée.
rickhg12hs

Réponses:

33

Vous pouvez installer les fichiers d’en-tête du noyau corrects comme suit:

$ sudo yum install "kernel-devel-uname-r == $(uname -r)"

Exemple

Cette commande installera toujours la bonne version.

$ sudo yum install "kernel-devel-uname-r == $(uname -r)"
Loaded plugins: auto-update-debuginfo, changelog, langpacks, refresh-packagekit
No package kernel-devel-uname-r == 3.12.6-200.fc19.x86_64 available.
Error: Nothing to do

Ou vous pouvez les rechercher comme ceci:

$ yum search "kernel-headers-uname-r == $(uname -r)" --disableexcludes=all
Loaded plugins: auto-update-debuginfo, changelog, langpacks, refresh-packagekit
Warning: No matches found for: kernel-headers-uname-r == 3.12.6-200.fc19.x86_64
No matches found

Cependant, j'ai également remarqué ce problème lorsque des versions spécifiques d'en-têtes ne sont pas présentes dans les référentiels. Vous devrez peut-être accéder à Koji pour trouver une version particulière d'une construction.

Cette page inclut tous les actifs de cette version du noyau.

slm
la source
2
Pourquoi est-ce mieux que yum install "kernel-devel-$(uname -r)"? D'après votre exemple, cela ne semble même même pas fonctionner ...
lundi
1
@drs - Cela ne fonctionne pas car il n'y a pas de paquet correspondant qui fournit les en-têtes pour la version de mon noyau. L'utilisation de for -uname-r` est un moyen plus portable de travailler avec des fichiers liés à la version du noyau. Il est utilisé sur la plupart des dépôts si vous regardez aussi leurs exemples: rpmfusion.org/Howto/nVidia
slm
C'était vraiment utile. Je pensais que j'avais installé la version correcte des en-têtes du noyau, une très petite différence de nom, mais ce n'était pas correct et la construction échouait. La commande ci-dessus m'a aidée à obtenir la version actuelle et à mieux comprendre la recherche de paquets. Merci +1
fkl
Existe-t-il un moyen de faire en sorte que yum / dnf installe automatiquement de nouveaux en-têtes de noyau chaque fois qu'il met à jour le noyau?
Shankar Narayanan
2
@slm où puis - je trouver des informations / documentation sur cette syntaxe: "kernel-devel-uname-r == $(uname -r)"?
Vadim Kotov
8

Synchronisation de la distribution

Votre problème pourrait être "synchronisation de distribution". L'exécution de cette commande a résolu mon problème.

yum distro-sync

Synchronise l'ensemble de packages installés avec les derniers packages disponibles. Pour ce faire, effectuez une opération obsolète, une mise à niveau ou une mise à niveau, le cas échéant. ( http://man7.org/linux/man-pages/man8/yum.8.html )

parfumé
la source
4

Vous pouvez installer une version spécifique d'un package en spécifiant la version avec le nom du package avec yum. Par exemple, pour installer les fichiers de développement du noyau correspondant au noyau que vous exécutez, tapez

yum install kernel-devel-3.9.5-301.fc19

Vous pouvez faire une commande similaire pour obtenir le bon kernel-headerspackage.

drs
la source
0

Cela m’arrive aussi parfois, d’installer VMBoxAdditions après une mise à jour du système.

Je dois enlever kernel-devs:

yum remove kernel-devel

puis réinstallez-le:

yum install kernel-devel

Et puis comme par magie ça marche.

Andrea
la source
0

Je rencontre la même chose après la mise à jour du noyau et la réponse de Jim m'a beaucoup aidé. Pour ce faire, activez le dépôt [elrepo-kerne] , allez dans /etc/yum.repos.d/elrepo.repofichier et définissez enabled=1(plutôt que enabled=0) pour [elrepo-kernel] , puis effectuez la mise à jour en fonction de la réponse de slm. Après cela, inversez le enabled=0, pour que le yum n’interagisse pas avec ce dépôt. Juste pour signaler, la commande yum repolist allvous montrera toutes les pensions activées et désactivées.

João Paulo
la source
-2

Après avoir suivi les suggestions de tout le monde, j'ai trouvé une chose qui m'a aidé à résoudre ce problème. Je devais activer le repo [elrepo-kernel]. Ensuite, j'ai pu installer les bons en-têtes et le noyau-devel

Jim
la source
Ce n'est pas une réponse complète à la question. Vous devriez soit améliorer votre réponse avec plus de détails, soit l'ajouter en tant que commentaire.
Fantastique M. Fox, le
@FantasticMrFox Ceci est une réponse à la question, bien qu'une réponse courte sans explication quant à la raison pour laquelle cette procédure est nécessaire, et elle fait double emploi avec ce que d'autres ont déjà dit.
Kusalananda