¿Cuál es el equivalente de Linux-kernel-devel en 12.04.2 LTS 3.5.0?

14

disculpas por la pregunta novata, pero cuando trato de

sudo apt-get install Linux-kernel-devel 

Me sale lo siguiente:

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  

He probado lo siguiente:

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

sin alegría ... alguna sugerencia?

paschwan
fuente
2
¿Qué esperas que haga el paquete linux-kernel-devel? ¿Estás buscando los encabezados o algo más?
Robie Basak

Respuestas:

15

Resumen Ejecutivo

Probablemente desee instalar el paquete llamado linux-headers-generic.

Si correr uname -rle da algo más que genericdespués del número de versión, sustitúyalo por genericin linux-headers-generic. (Esto podría ser servero generic-paeen algunas instalaciones de algunos lanzamientos de Ubuntu, y hay algunos otros "sabores" ocasionales del kernel).

Dado que lo más probable es que necesite esto para poder construir un controlador (que podría estar automatizado, es posible que no esté "construyéndolo usted mismo"), es una buena idea instalar build-essentialtambién para hacerlo, de modo que probablemente tenga todas las herramientas necesarias .

Explicación completa

Que yo sepa, ningún sistema operativo tiene un paquete llamado Linux-kernel-devel. Esto es por dos razones:

  • Los nombres de paquetes que comienzan con letras mayúsculas son extremadamente raros, para cualquier sistema operativo tipo Unix.
  • Los sistemas operativos GNU / Linux suelen nombrar sus paquetes relacionados con el kernel para que los nombres contengan la palabra kernel o la palabra linux , pero no ambas. (En Ubuntu, es la palabra Linux ).

Es común que los paquetes relacionados con el kernel en sistemas que usan Red Hat Package Manager ( rpm) y utilidades relacionadas tengan kernelen el nombre de sus paquetes. Por ejemplo, Mageia tiene varios paquetes cuyos nombres comienzan kernely terminan en devel. Estos paquetes casi siempre (en Mageia y cualquier sistema operativo que los tenga) proporcionan los archivos de encabezado necesarios para construir controladores desde la fuente para usar con el núcleo. También pueden proporcionar utilidades relacionadas para facilitar. Estos paquetes:

  • no no proporcionar el código fuente completo del núcleo. Eso lo proporcionan otros paquetes.
  • no no proporcionar un kernel utilizable pre-compilados. Eso lo proporcionan otros paquetes.
  • no no proporcionar un compilador o la mayoría de las otras herramientas especialmente construido. Esos también son provistos por otros paquetes.

En Ubuntu, como se puede ver en la lista aquí , los paquetes que proporcionan encabezados de kernel tienen nombres que comienzan con linux-headers. Por lo general, el paquete correcto para instalar es linux-headers-generic. Sin embargo, para estar seguro de qué paquete instalar para obtener los encabezados que corresponden a su núcleo actualmente en ejecución, ejecute:

uname -r

Obtendrá una salida que se parece a:

3.5.0-36-generic

Es decir, tendrá un número de versión (que incluirá .caracteres y generalmente al menos uno -), seguido de a -, seguido de una o más palabras que indican qué tipo de núcleo está ejecutando.

Si solo desea los encabezados para la versión específica que está ejecutando ahora, puede instalar el paquete cuyo nombre es linux-headers-*donde *se reemplaza por la salida completa de uname -r. Por ejemplo, en mi sistema, podría ejecutar:

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

Incluso podría automatizarlo:

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

Estos enfoques son equivalentes, pero no suelen ser el mejor camino a seguir.

En su lugar, generalmente querrá instalar el metapaquete que siempre proporciona los encabezados de kernel más nuevos como una actualización (dependiendo perpetuamente del paquete de encabezado más nuevo). Esto es paralelo a la forma en que su núcleo compilado y en ejecución se instala y se actualiza. Para hacer eso, mire solo la parte de uname -rla salida después del número de versión. Es decir, si uname -rte da 3.5.0-36-generic, toma solo la genericparte.

Luego instale el paquete llamado linux-headers-*donde *se reemplaza por esa parte. Entonces, en mi sistema, sería linux-headers-genericy una forma en que podría instalarlo sería ejecutar:

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

Para la mayoría de la gente es linux-headers-generic, pero dependiendo de lo suelte Ubuntu se está ejecutando, lo que la arquitectura y el tipo de dispositivo que se está ejecutando en, y la forma en que está instalado y configurado, otras posibilidades incluyen generic-pae, highbank, omap, server, y virtual.

Paquetes relacionados

Los archivos de encabezado facilitan el desarrollo y la compilación / creación de software que utiliza las instalaciones proporcionadas por el software cuyos archivos de encabezado se están utilizando. La razón más común por la que puede necesitar encabezados de núcleo es si va a construir un controlador (un módulo de núcleo) a partir del código fuente. Algunas aplicaciones, como VMware y VirtualBox, a veces requerirán esto y automatizarán la compilación ellos mismos.

Además de los archivos de encabezado, para construir software se necesita un compilador y otras herramientas. Para maximizar la probabilidad de que tenga las herramientas necesarias, también es una buena idea instalar el build-essentialpaquete.

Es raro que alguien necesite el código fuente completo del núcleo real (a menos, por supuesto, que esté planeando construir su núcleo desde la fuente). Pero si lo necesita, también deberá instalar otro paquete. En Ubuntu se llama el paquete para el código fuente completo del núcleo linux-source. (Esto está de acuerdo con la convención Debian / Ubuntu de nombrar paquetes que proporcionan partes sustantivas del kernel de Linux en linuxlugar de kernel).

Si aún tienes problemas

Si intenta instalar cualquiera de estos paquetes pero experimenta problemas y desea ayuda, deberá incluir el texto completo y exacto del Terminal, incluidas las líneas donde escribió los comandos. La mejor manera de proporcionar esto es editando su pregunta, pero si es demasiado larga, puede pegarla en algún lugar como http://paste.ubuntu.com y proporcionarnos la URL donde podemos acceder a ella.

Si comentas sobre esta pregunta, seré notificado. Puede editar su pregunta y también comentar aquí para llamar la atención sobre la información que ha proporcionado en su pregunta. (La información importante se guarda mejor en preguntas y respuestas). ¡Buena suerte!

Eliah Kagan
fuente
0

Como decía el informe (E: No se puede localizar el paquete linux-kernel-devel) No hay paquetes como ese. Puede instalar todas las versiones del núcleo que desee descargando los paquetes del núcleo de Debian desde aquí

Por ejemplo; queremos instalar el kernel 3.9.8 (arquitectura i386); Descargue todos los paquetes ** i386.deb Y también el paquete * * * all.deb a una carpeta. Ingrese a la carpeta con el comando cd en la terminal;

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

Esto instalará la versión del kernel que desee. Puede analizar las versiones de la línea principal del núcleo y las versiones a largo plazo en este sitio

ubuntu_tr
fuente
0

Tendrá que trazar usted mismo qué deb específicos necesita, pero existen los deb que necesitará en las compilaciones del núcleo de Ubunut .

Honestamente, primero consultaría sudo apt-get updatey luego sudo apt-get dist-upgradepara asegurarme de que está ejecutando el kernel más reciente y no necesitaré hacer esto nuevamente en breve.

Luego mire a través de la lista de compilación del kernel para su versión que coincida con su uname -r. Debe buscar en cada builds build.log para averiguar a qué versión principal están asignando esa build. Tengo 3.5.0-34 # 55 listado como mi núcleo, pero esto realmente se mapea para construir 3.5.7.14-quantal . Instale todas las debs que correspondan con esa versión para obtener sus encabezados y demás, y asegúrese de tener sus herramientas de compilación consudo apt-get install build-essential

Sin embargo, su kilometraje puede variar dependiendo de lo que planee hacer con los archivos de desarrollo.

Kallor
fuente
0

linux-kernel-devel es el nombre de un paquete SUSE / Redhat que proporciona cosas como genksyms.

Un Google muy rápido sugiere que linux-headers-generic proporciona genksyms en Debian / Ubuntu.

Tim Baverstock
fuente