yum installs kernel-devel different from my kernel version

144,687

Solution 1

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.

Solution 2

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)

Solution 3

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.

Solution 4

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.

Share:
144,687

Related videos on Youtube

Fantastic Mr Fox
Author by

Fantastic Mr Fox

I am a software engineer and roboticist. Building robots is my thing!

Updated on September 18, 2022

Comments

  • Fantastic Mr Fox
    Fantastic Mr Fox almost 2 years

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

    • rickhg12hs
      rickhg12hs over 10 years
      Just curious ... Why aren't you running the latest kernel in Fedora 19?
    • Fantastic Mr Fox
      Fantastic Mr Fox over 10 years
      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?
    • rickhg12hs
      rickhg12hs over 10 years
      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.
  • drs
    drs over 10 years
    Why is this better than yum install "kernel-devel-$(uname -r)"? From your example, it doesn't even seem to even work...
  • slm
    slm over 10 years
    @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
  • fkl
    fkl about 10 years
    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
  • Shankar Narayanan
    Shankar Narayanan over 8 years
    Is there a way we can make yum/dnf automatically install new kernel headers as well whenever it updates the kernel ?
  • slm
    slm over 8 years
    @ShankarNarayanan - if you have a new question I encourage you to ask it .
  • Shankar Narayanan
    Shankar Narayanan over 8 years
    @slm Thanks. I had asked a similar question few days before. Please find the link here. unix.stackexchange.com/questions/251271/…
  • Vadim Kotov
    Vadim Kotov over 6 years
    @slm where can I find any information/documentation on this syntax: "kernel-devel-uname-r == $(uname -r)"?
  • Vadim Kotov
    Vadim Kotov over 6 years
    Is it Fedora-specific or it can work on Centos?
  • gbox
    gbox almost 3 years
    For anyone getting this for Oracle Linux AND using the UEK kernel, the kernel-headers are in a different package (kernel-uek-devel). The correct call for Oracle Linux UEK Kernel is: sudo yum install "kernel-uek-devel-uname-r == $(uname -r)"