qual é o equivalente do linux-kernel-devel no 12.04.2 LTS 3.5.0?

14

desculpas pela pergunta noob, mas quando tento

sudo apt-get install Linux-kernel-devel 

Eu recebo o seguinte:

sudo apt-get install linux-kernel-devel  
Reading package lists... Done  
Building dependency tree        
Reading state information... Done  
E: Unable to locate package linux-kernel-devel  

Eu tentei o seguinte:

sudo apt-get install linux-headers-$(uname -r)  
sudo apt-get install build-essentials  
sudo apt-get install Linux-headers-generic 

sem alegria ... alguma sugestão?

Paschwan
fonte
2
O que você espera que o pacote linux-kernel-devel faça? Você está procurando os cabeçalhos ou algo mais?
precisa

Respostas:

15

Sumário executivo

Você provavelmente deseja instalar o pacote chamado linux-headers-generic.

Se a execução uname -rfornecer algo diferente de genericdepois do número da versão, substitua por genericin linux-headers-generic. (Pode ser serverou generic-paeem algumas instalações de algumas versões do Ubuntu, e existem alguns outros "sabores" ocasionais do kernel)

Como você provavelmente precisa disso para poder criar um driver (que pode ser automatizado, você pode não estar "construindo você mesmo"), é uma boa ideia instalar build-essentialtambém para torná-lo, para que você provavelmente tenha todas as ferramentas necessárias .

Explicação completa

Que eu saiba, nenhum sistema operacional possui um pacote chamado Linux-kernel-devel. Isso ocorre por dois motivos:

  • Os nomes de pacotes iniciados com letras maiúsculas são extremamente raros, para qualquer sistema operacional semelhante ao Unix.
  • Os sistemas operacionais GNU / Linux normalmente nomeiam seus pacotes relacionados ao kernel, de modo que os nomes contenham a palavra kernel ou a palavra linux , mas não os dois. (No Ubuntu, é a palavra linux .)

É comum que pacotes relacionados ao kernel em sistemas que usam o Red Hat Package Manager ( rpm) e utilitários relacionados tenham kernelo nome de seus pacotes. Por exemplo, a Mageia possui vários pacotes cujos nomes começam kernele terminam em devel. Esses pacotes quase sempre (na Mageia e em qualquer sistema operacional que os possua) fornecem os arquivos de cabeçalho necessários para criar drivers a partir da fonte para uso com o kernel. Eles também podem fornecer utilitários relacionados para facilitar. Estes pacotes:

  • que não fornecer o código fonte completo do kernel. Isso é fornecido por outros pacotes.
  • que não fornecem, um kernel utilizável pré-compilados. Isso é fornecido por outros pacotes.
  • que não fornecer um compilador ou a maioria das outras ferramentas finalidade de construção. Esses também são fornecidos por outros pacotes.

No Ubuntu, como pode ser visto na lista aqui , os pacotes que fornecem cabeçalhos de kernel têm nomes que começam com linux-headers. Geralmente o pacote correto para instalar é linux-headers-generic. No entanto, para ter certeza de qual pacote instalar para obter os cabeçalhos que correspondem ao seu kernel atualmente em execução, execute:

uname -r

Você obterá resultados parecidos com:

3.5.0-36-generic

Ou seja, você terá um número de versão (que incluirá .caracteres e geralmente pelo menos um -), seguido por a -, seguido por uma ou mais palavras indicando que tipo de kernel você está executando.

Se você apenas deseja que os cabeçalhos da versão específica em execução agora, você pode instalar o pacote cujo nome é linux-headers-*onde *é substituído pela saída completa de uname -r. Por exemplo, no meu sistema, eu poderia executar:

sudo apt-get update && sudo apt-get install linux-headers-3.5.0-36-generic

Eu poderia até automatizar:

sudo apt-get update && sudo apt-get install linux-headers-`uname -r`

Essas abordagens são equivalentes, mas geralmente não são o melhor caminho a percorrer.

Em vez disso, você geralmente desejará instalar o metapacote que sempre fornece os cabeçalhos do kernel mais recentes como uma atualização (dependendo perpetuamente de qualquer pacote de cabeçalho mais recente). Isso é paralelo ao modo como o kernel compilado e em execução é instalado e atualizado. Para fazer isso, observe apenas a parte da uname -rsaída após o número da versão. Ou seja, se uname -rvocê der 3.5.0-36-generic, pegue apenas a genericparte.

Em seguida, instale o pacote chamado linux-headers-*where *é substituído por essa parte. Então, no meu sistema, seria linux-headers-generice uma maneira de instalá-lo seria:

sudo apt-get update && sudo apt-get install linux-headers-generic

Para a maioria das pessoas é linux-headers-generic, mas dependendo do que Ubuntu liberar você está funcionando, o que a arquitetura eo tipo de dispositivo que você está executando-o em, e como ele é instalado e configurado, outras possibilidades incluem generic-pae, highbank, omap, server, e virtual.

Pacotes relacionados

Os arquivos de cabeçalho facilitam o desenvolvimento e a compilação / construção de software que utiliza os recursos fornecidos pelo software cujos arquivos de cabeçalho estão sendo usados. O motivo mais comum para você precisar dos cabeçalhos do kernel é se você deseja criar um driver (um módulo do kernel) a partir do código-fonte. Algumas aplicações, como VMware e VirtualBox, às vezes exigem isso e automatizam a compilação.

Além dos arquivos de cabeçalho, para compilar o software, é necessário um compilador e outras ferramentas. Para maximizar a probabilidade de você ter as ferramentas necessárias, é uma boa ideia instalar o build-essentialpacote também.

É incomum alguém precisar do código fonte completo do kernel (a menos, é claro, que você esteja planejando criar seu kernel a partir do código-fonte). Mas se você precisar, precisará instalar outro pacote também. No Ubuntu, o pacote para o código fonte completo do kernel é chamado linux-source. (Isso está de acordo com a convenção Debian / Ubuntu de nomear pacotes que fornecem partes substanciais do kernel Linux em linuxvez de kernel).

Se você ainda tiver problemas

Se você tentar instalar qualquer um desses pacotes, mas tiver problemas, e precisar de ajuda, precisará incluir o texto completo e exato do Terminal, incluindo as linhas em que você digitou os comandos. A melhor maneira de fornecer isso é editando sua pergunta, mas se for muito longa, você pode colá-la em algum lugar como http://paste.ubuntu.com e fornecer a URL onde podemos acessá-la.

Se você comentar esta pergunta, serei notificado. Você pode editar sua pergunta e também comentar aqui para chamar a atenção para as informações fornecidas na sua pergunta. (É importante manter informações importantes em perguntas e respostas.) Boa sorte!

Eliah Kagan
fonte
0

Como o relatório dizia (E: Não foi possível localizar o pacote linux-kernel-devel) Não há pacotes como esse. Você pode instalar todas as versões do kernel que deseja baixando os pacotes do kernel da Debian aqui

Por exemplo; queremos instalar o kernel 3.9.8 (arquitetura i386); Faça o download de todos os pacotes ** i386.deb E também do pacote * * * all.deb em uma pasta. Entre na pasta com o comando cd no terminal;

sudo dpkg -i *.deb
sudo update-grub2
sudo reboot

Isso instalará a versão do kernel que você deseja. Você pode analisar as versões da linha principal e das versões de longo prazo do kernel neste site

ubuntu_tr
fonte
0

Você terá que mapear você mesmo quais debs específicos você precisa, mas existem os debs necessários nas compilações do kernel do Ubunut .

Honestamente, primeiro eu deveria verificar sudo apt-get updatee depois sudo apt-get dist-upgradegarantir que você esteja executando o kernel mais recente e não precisará fazer isso novamente em breve.

Em seguida olhar através da construção do kernel listando para sua versão que corresponde ao seu uname -r. Você precisa olhar em cada build.log para descobrir para qual versão principal eles estão mapeando. Eu tenho 3.5.0-34 # 55 listado como meu kernel, mas isso realmente mapeia para compilar 3.5.7.14-quantal . Instale todas as debs que correspondem a essa versão para obter seus cabeçalhos e tal e verifique se você possui suas ferramentas de construção comsudo apt-get install build-essential

Sua milhagem pode variar, dependendo do que você planeja fazer com os arquivos de desenvolvimento.

Kallor
fonte
0

linux-kernel-devel é o nome de um pacote SUSE / Redhat que fornece coisas como ginásios.

Um Google muito rápido sugere que o linux-headers-generic fornece ginásios no Debian / Ubuntu.

Tim Baverstock
fonte