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

11

desculpas pela questão 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?

    
por paschwan 15.07.2013 / 16:17

4 respostas

14

Resumo executivo

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

Se a execução de uname -r der a você algo diferente de generic após o número da versão, substitua-o por generic in linux-headers-generic . (Isso pode ser server ou generic-pae em algumas instalações de algumas versões do Ubuntu, e há 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 idéia instalar o build-essential também para que você possa provavelmente tem todas as ferramentas necessárias.

Explicação completa

No melhor de meu conhecimento, nenhum sistema operacional possui um pacote chamado Linux-kernel-devel . Isso é por dois motivos:

  • Os nomes dos pacotes que começam 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 para que os nomes contenham a palavra kernel ou a palavra linux , mas não ambos. (No Ubuntu, é a palavra linux .)

É comum que os pacotes relacionados ao kernel em sistemas que usam o Gerenciador de Pacotes da Red Hat ( rpm ) e utilitários relacionados tenham kernel no nome de seus pacotes. Por exemplo, a Mageia tem inúmeros pacotes cujos nomes começam com kernel e terminar em devel . Esses pacotes quase sempre (na Mageia e em qualquer SO que os tenha) fornecem os arquivos de cabeçalho necessários para construir drivers a partir do código fonte para uso com o kernel. Eles também podem fornecer utilitários relacionados para facilitar. Estes pacotes:

  • não fornece o código-fonte completo do kernel. Isso é fornecido por outros pacotes.
  • o não fornece um kernel utilizável pré-compilado. Isso é fornecido por outros pacotes.
  • não fornece um compilador ou a maioria das outras ferramentas de criação de propósito. 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 possuem nomes que começam com linux-headers . Normalmente, 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ê terá uma saída parecida 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 - , seguido por uma ou mais palavras indicando qual tipo de kernel você estão em execução.

Se você apenas quiser os cabeçalhos da versão específica que está executando agora, poderá instalar o pacote cujo nome é linux-headers-* , em que * é substituído pela saída total de% código%. Por exemplo, no meu sistema, posso executar:

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

Eu poderia até automatizá-lo:

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 seguir.

Em vez disso, você geralmente vai querer instalar o metapacote que sempre fornece os mais novos cabeçalhos de kernel como uma atualização (por perpetuamente dependendo do pacote de cabeçalho mais recente). Isso é semelhante ao modo como seu kernel compilado e em execução é instalado e atualizado. Para fazer isso, observe apenas a parte da saída de uname -r após o número da versão. Ou seja, se uname -r der a você uname -r , leve apenas a parte 3.5.0-36-generic .

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

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

Para a maioria das pessoas, é linux-headers-generic , mas dependendo de qual versão do Ubuntu você está executando, qual arquitetura e tipo de dispositivo você está usando, e como ela é instalada e configurada, outras possibilidades incluem linux-headers-generic , generic-pae , highbank , omap e server .

Pacotes relacionados

Arquivos de cabeçalho facilitam o desenvolvimento e compilação / construção de software que utiliza recursos fornecidos pelo software cujos arquivos de cabeçalho estão sendo usados. O motivo mais comum que você pode precisar de cabeçalhos de kernel é se você vai construir um driver (um módulo de kernel) a partir do código-fonte. Alguns aplicativos, como o VMware e o VirtualBox, às vezes exigem isso e automatizam a construção.

Além dos arquivos de cabeçalho, para construir software, um compilador e outras ferramentas são necessárias. Para maximizar a probabilidade de você ter as ferramentas necessárias, é uma boa idéia instalar o pacote virtual também.

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

Se você ainda tiver problemas

Se você tentar instalar algum desses pacotes, mas tiver problemas e quiser ajuda, terá que incluir o texto completo e exato do Terminal, incluindo as linhas nas quais você digitou comandos. A melhor maneira de fornecer isso é editando sua pergunta, mas se ela for muito longa, você pode colá-la em algum lugar como o link e nos fornecer o URL onde podemos acessá-lo.

Se você comentar esta questão, serei notificado. Você pode editar sua pergunta e também comentar aqui para chamar a atenção para as informações que você forneceu em sua pergunta. (Informações importantes são mantidas em perguntas e respostas.) Boa sorte!

    
por Eliah Kagan 15.07.2013 / 17:31
0

Como o relatório dizia (E: Não é possível localizar o pacote linux-kernel-devel) Não há pacotes como esse. Você pode instalar todas as versões do kernel que desejar, baixando os pacotes do kernel debian de 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 * * * all.deb para uma pasta. Entre na pasta com o comando cd no terminal;

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

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

    
por ubuntu_tr 15.07.2013 / 16:47
0

Você terá que mapear você mesmo qual o deb específico que você precisa, mas existem os debs que você precisará em O kernel do Ubunut é construído .

Honestamente, eu primeiro verifico com sudo apt-get update e, em seguida, com sudo apt-get dist-upgrade para ter certeza de que você está executando o kernel mais recente e não precisará fazer isso novamente em breve.

Em seguida, examine a listagem de criação do kernel para sua versão que corresponde ao seu uname -r . Você precisa procurar em cada compilações build.log para descobrir em qual versão principal elas estão sendo mapeadas. Eu tenho 3.5.0-34 # 55 listado como meu kernel, mas isso realmente mapeia para construir 3.5.7.14-quantal . Instale todos os debs que correspondem a essa versão para obter seus cabeçalhos e tal, e certifique-se de ter suas ferramentas de compilação com sudo apt-get install build-essential

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

    
por Kallor 15.07.2013 / 18:19
0

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

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

    
por Tim Baverstock 03.08.2016 / 12:53