yum instala kernel-devel diferente de mi versión de kernel

32

Estoy intentando instalar el reproductor VMWare en Fedora 19. Me encuentro con el problema que han tenido varios usuarios donde el reproductor VMware no puede encontrar los encabezados del núcleo. He instalado el kernel-headersy kernel-develpaquetes a través yumy el archivo que aparece en /usr/src/kernelses:

3.12.8-200.fc19.x86_64

Sin embargo, cuando hago uname -rmi versión del kernel de Fedora es:

3.9.5-301.fc19.x86_64

que es una versión diferente Esto parece significar que cuando apunto al reproductor VMware en la ruta de los núcleos me sale este error:

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

¿Cómo puedo instalar el Kernel correcto y dónde debo apuntar a VMware si no es así /usr/src/kernels/<my-kernel>?

Fantástico Sr. Fox
fuente
Solo curiosidad ... ¿Por qué no estás ejecutando el último kernel en Fedora 19?
rickhg12hs
No por mi propia decisión. Instalé desde el sitio web la última compilación que pude. ¿Hay alguna manera de actualizar el kernel?
Fantástico Mr Fox
La mayoría mantiene todos los paquetes actualizados mediante el Administrador de paquetes o como root ejecutando yum updatedesde una línea de comandos. Hecho con frecuencia, y con una conexión a Internet decente, no lleva mucho tiempo, pero tienes que ponerte al día. Para usar el nuevo kernel, deberá reiniciar después de que se complete la actualización.
rickhg12hs

Respuestas:

33

Puede instalar los archivos de encabezado de kernel correctos de esta manera:

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

Ejemplo

Este comando siempre instalará la versión correcta.

$ 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

O puede buscarlos así:

$ 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

Sin embargo, he notado este problema también cuando las versiones específicas de los encabezados no están presentes en los repositorios. Es posible que tenga que llegar a Koji para encontrar una versión particular de una compilación.

Esa página incluye todos los activos para esa versión particular del Kernel.

slm
fuente
2
¿Por qué es esto mejor que yum install "kernel-devel-$(uname -r)"? Según su ejemplo, ni siquiera parece funcionar ...
doctores
1
@drs: no funciona b / c, no hay ningún paquete coincidente que proporcione los encabezados para mi versión de kernel. Usar for -uname-r` es una forma más portátil de hacer trabajo con pkgs que están vinculados a la versión del kernel. Se usa en la mayoría de los repos si mira también sus ejemplos: rpmfusion.org/Howto/nVidia
slm
Esto fue realmente útil. Pensé que había instalado la versión correcta de los encabezados del núcleo, una diferencia muy pequeña en el nombre, pero no era correcta y no se pudo construir. El comando anterior me ayudó a obtener el real y me dio una mejor idea de la búsqueda de paquetes. Gracias +1
fkl
¿Hay alguna manera de hacer que yum / dnf instale automáticamente nuevos encabezados de kernel también cada vez que actualiza el kernel?
Shankar Narayanan
2
@slm, ¿dónde puedo encontrar información / documentación sobre esta sintaxis "kernel-devel-uname-r == $(uname -r)":?
Vadim Kotov
8

Sincronización de distribución

Su problema podría ser "sincronización de distribución". Ejecutar este comando resolvió mi problema.

yum distro-sync

Sincroniza el conjunto de paquetes instalados con los paquetes más recientes disponibles, esto se realiza mediante la obsolescencia, la actualización o la degradación, según corresponda. ( http://man7.org/linux/man-pages/man8/yum.8.html )

fragante
fuente
4

Puede instalar una versión específica de un paquete especificando la versión junto con el nombre del paquete con yum. Por ejemplo, para instalar los archivos de desarrollo del núcleo para el núcleo específico que está ejecutando, escriba

yum install kernel-devel-3.9.5-301.fc19

Puede hacer un comando similar para obtener el kernel-headerspaquete correcto .

drs
fuente
0

También me pasa algunas veces, instalando VMBoxAdditions después de una actualización del sistema.

Tengo que eliminar kernel-devs:

yum remove kernel-devel

y luego reinstalarlo:

yum install kernel-devel

Y luego mágicamente funciona.

Andrea
fuente
0

Me encuentro con lo mismo después de actualizar el kernel y la respuesta de Jim ayudó mucho. Para habilitar el repositorio [elrepo-kerne] , vaya al /etc/yum.repos.d/elrepo.repoarchivo y configure enabled=1(en lugar de enabled=0) para [elrepo-kernel] , luego realice la actualización informada por la respuesta de slm. Después de eso, invierta al enabled=0, para que yum no interactúe con este repositorio. Solo para señalar, el comando yum repolist allle mostrará todos los repositorios habilitados y deshabilitados.

Joao Paulo
fuente
-2

Después de seguir las sugerencias de todos, encontré una cosa de mi parte que me ayudó a solucionar esto. Tuve que habilitar el repositorio [elrepo-kernel]. Luego pude instalar los encabezados correctos y el desarrollo del núcleo

Jim
fuente
Esta no es una respuesta completa a la pregunta. Debes mejorar tu respuesta con más detalles o agregar esto como un comentario.
Fantástico Mr Fox
@FantasticMrFox Esta es una respuesta a la pregunta, aunque sea una respuesta breve sin explicación de por qué es necesario este procedimiento, y duplica lo que otros ya han dicho.
Kusalananda