42

I am attempting to install the VMWare player in Fedora 19. I am running into the problem that multiple users have had where VMware player cannot find the kernel headers. I have installed the kernel-headers and kernel-devel packages through yum and the file that appears in /usr/src/kernels is:

3.12.8-200.fc19.x86_64

However, when I do uname -r my Fedora kernel version is:

3.9.5-301.fc19.x86_64

which is a different version. This seems to mean that when I point VMware player at the path of the kernels I get this error:

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

How can I install the correct Kernel and where should I be pointing VMware if its not /usr/src/kernels/<my-kernel> ?

3
  • Just curious ... Why aren't you running the latest kernel in Fedora 19?
    – rickhg12hs
    Commented Jan 24, 2014 at 18:25
  • Not by a my own decision. I installed from the webiste the latest build that i could. Is there a way to update the kernel? Commented Jan 28, 2014 at 1:46
  • Most keep all the packages current by using the Package Manager or as root executing yum update from a command line. Done frequently, and with a decent Internet connection, it doesn't take long, but you've got a bit of catch-up to do. To use the new kernel, you'll need to reboot after the update is done.
    – rickhg12hs
    Commented Jan 28, 2014 at 10:38

5 Answers 5

47

You can install the correct kernel header files like so:

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

Example

This command will always install the right 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

Or you can search for them like this:

$ 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

However I've notice this issue as well where specific versions of headers are not present in the repositories. You might have to reach into Koji to find a particular version of a build.

That page includes all the assets for that particular version of the Kernel.

9
  • 8
    Why is this better than yum install "kernel-devel-$(uname -r)"? From your example, it doesn't even seem to even work...
    – drs
    Commented Jan 28, 2014 at 15:28
  • 1
    @drs - It doesn't work b/c there aren't any matching pkgs that provide the headers for my kernel version. Using the for -uname-r` is a more portable way of doing work w/ pkgs that are tied to the kernel version. It's used on most repos if you look at their examples too: rpmfusion.org/Howto/nVidia
    – slm
    Commented Jan 28, 2014 at 17:56
  • This was really helpful. I thought i had installed the correct version of kernel headers, a very small difference in name, but it was not correct and failing to build. Above command helped me got the actual one as well as give me better insight into package search. Thank you +1
    – fkl
    Commented Apr 24, 2014 at 23:07
  • Is there a way we can make yum/dnf automatically install new kernel headers as well whenever it updates the kernel ? Commented Dec 31, 2015 at 2:37
  • 3
    @slm where can I find any information/documentation on this syntax: "kernel-devel-uname-r == $(uname -r)"? Commented Oct 31, 2017 at 15:52
11

Distribution Synchronization

Your problem could be "distribution synchronization". Running this command solved my problem.

yum distro-sync

Synchronizes the installed package set with the latest packages available, this is done by either obsoleting, upgrading or downgrading as appropriate. (http://man7.org/linux/man-pages/man8/yum.8.html)

1
  • This helped but I just did sudo yum upgrade kernel, not the whole distro because it causes some undesired downgrades.
    – Gaël J
    Commented Nov 10, 2023 at 8:20
5

You can install a specific version of a package by specifying the version along with the package name with yum. For example, to install the kernel development files for the specific kernel you're running, type

yum install kernel-devel-3.9.5-301.fc19

You can do a similar command to get the right kernel-headers package.

1

It happens some times also to me, installing VMBoxAdditions after a system update.

I have to remove kernel-devs:

yum remove kernel-devel

and then re-install it:

yum install kernel-devel

And then magically it works.

1

I come across the same thing after update the kernel and Jim's answer helped a lot. To do enable the [elrepo-kerne] repo, go to /etc/yum.repos.d/elrepo.repo file and set enabled=1 (rather than enabled=0) for [elrepo-kernel], then do the update informed by slm's answer. After that, reverse to the enabled=0, so that the yum will not interact with this repo. Just to point out, the command yum repolist all will show you all enabled and disabled repos.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .