O yum instala o kernel-devel diferente da minha versão do kernel

32

Estou tentando instalar o VMWare player no Fedora 19. Estou enfrentando o problema que vários usuários tiveram, onde o VMware player não consegue encontrar os cabeçalhos do kernel. Eu instalei os pacotes kernel-headerse kernel-develatravés yume o arquivo que aparece /usr/src/kernelsé:

3.12.8-200.fc19.x86_64

No entanto, quando eu faço uname -rminha versão do kernel do Fedora é:

3.9.5-301.fc19.x86_64

que é uma versão diferente. Isso parece significar que, quando aponto o VMware player no caminho dos kernels, recebo este erro:

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

Como posso instalar o Kernel correto e para onde devo apontar o VMware, se não estiver /usr/src/kernels/<my-kernel>?

Fantastic Mr Fox
fonte
Apenas curioso ... Por que você não está executando o kernel mais recente no Fedora 19?
precisa saber é o seguinte
Não por minha própria decisão. Eu instalei do webiste a versão mais recente que pude. Existe uma maneira de atualizar o kernel?
Fantastic Mr Fox
A maioria mantém todos os pacotes atualizados usando o Gerenciador de Pacotes ou como root executando a yum updatepartir de uma linha de comando. Feito com freqüência, e com uma conexão decente à Internet, não demora muito, mas você tem muito o que fazer. Para usar o novo kernel, você precisará reiniciar após a atualização.
precisa saber é o seguinte

Respostas:

33

Você pode instalar os arquivos de cabeçalho do kernel corretos da seguinte maneira:

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

Exemplo

Este comando sempre instalará a versão correta.

$ 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 você pode procurá-los assim:

$ 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

No entanto, observei esse problema também, onde versões específicas de cabeçalhos não estão presentes nos repositórios. Talvez você precise acessar Koji para encontrar uma versão específica de uma compilação.

Essa página inclui todos os ativos para essa versão específica do Kernel.

slm
fonte
2
Por que isso é melhor do que yum install "kernel-devel-$(uname -r)"? Do seu exemplo, ele nem parece funcionar ...
drs
1
@drs - Não funciona porque não há pacotes correspondentes que forneçam os cabeçalhos para a minha versão do kernel. O uso do forununame-r` é uma maneira mais portátil de executar trabalhos com pkgs vinculados à versão do kernel. É usado na maioria dos repositórios, se você olhar também para os exemplos deles: rpmfusion.org/Howto/nVidia
slm
Isso foi realmente útil. Eu pensei que tinha instalado a versão correta dos cabeçalhos do kernel, uma diferença muito pequena no nome, mas ela não estava correta e falhou ao criar. O comando acima me ajudou a obter o real, além de me dar uma melhor compreensão da pesquisa de pacotes. Obrigado +1
fkl
Existe uma maneira de fazer com que o yum / dnf instale automaticamente novos cabeçalhos de kernel sempre que ele for atualizado?
Shankar Narayanan
2
@slm onde posso encontrar qualquer informação / documentação sobre esta sintaxe "kernel-devel-uname-r == $(uname -r)":?
Vadim Kotov
8

Sincronização de distribuição

Seu problema pode ser "sincronização de distribuição". A execução deste comando resolveu meu problema.

yum distro-sync

Sincroniza o conjunto de pacotes instalado com os pacotes mais recentes disponíveis, isso é feito obsoleto, atualizando ou desatualizando, conforme apropriado. ( http://man7.org/linux/man-pages/man8/yum.8.html )

redolente
fonte
4

Você pode instalar uma versão específica de um pacote especificando a versão junto com o nome do pacote yum. Por exemplo, para instalar os arquivos de desenvolvimento do kernel para o kernel específico que você está executando, digite

yum install kernel-devel-3.9.5-301.fc19

Você pode executar um comando semelhante para obter o kernel-headerspacote certo .

drs
fonte
0

Também acontece algumas vezes comigo, instalando o VMBoxAdditions após uma atualização do sistema.

Eu tenho que remover o kernel-devs:

yum remove kernel-devel

e reinstale-o:

yum install kernel-devel

E então magicamente funciona.

Andrea
fonte
0

Me deparei com a mesma coisa depois de atualizar o kernel e a resposta de Jim ajudou muito. Para habilitar o repo [elrepo-kerne] , vá para o /etc/yum.repos.d/elrepo.repoarquivo e defina enabled=1(em vez de enabled=0) para [elrepo-kernel] e faça a atualização informada pela resposta do slm. Depois disso, inverta para enabled=0, para que o yum não interaja com este repositório. Apenas para salientar, o comando yum repolist allmostrará todos os repositórios ativados e desativados.

João Paulo
fonte
-2

Depois de seguir as sugestões de todos, encontrei uma coisa que ajudou a corrigir isso. Eu tive que ativar o repo [elrepo-kernel]. Pude instalar os cabeçalhos corretos e o kernel-devel

Jim
fonte
Esta não é uma resposta completa para a pergunta. Você deve melhorar sua resposta com mais detalhes ou adicioná-la como um comentário.
Fantastic Mr Fox
@FantasticMrFox Esta é uma resposta para a pergunta, embora seja uma resposta curta e sem explicações sobre por que esse procedimento é necessário, e duplica o que outros já disseram.
Kusalananda