Sintesi
Probabilmente vuoi installare il pacchetto chiamato linux-headers-generic
.
Se correre uname -r
ti dà qualcosa di diverso da generic
dopo il numero di versione, sostituiscilo con generic
in linux-headers-generic
. (Questo potrebbe essere server
o generic-pae
su alcune installazioni di alcune versioni di Ubuntu, e ci sono alcune altre "versioni" occasionali del kernel)
Poiché molto probabilmente ne hai bisogno in modo da poter costruire un driver (che potrebbe essere automatizzato, potresti non "costruirlo da solo"), è una buona idea installarlo build-essential
anche per farlo, quindi avrai probabilmente tutti gli strumenti necessari .
Spiegazione completa
Per quanto ne so, nessun sistema operativo ha un pacchetto chiamato Linux-kernel-devel
. Questo per due motivi:
- I nomi dei pacchetti che iniziano con le lettere maiuscole sono estremamente rari, per qualsiasi sistema operativo simile a Unix.
- I sistemi operativi GNU / Linux in genere denominano i loro pacchetti relativi al kernel in modo che i nomi contengano la parola kernel o la parola linux , ma non entrambi. (Su Ubuntu, è la parola Linux .)
È comune per i pacchetti relativi al kernel su sistemi che utilizzano Red Hat Package Manager ( rpm
) e le utilità correlate che hanno kernel
nel nome dei loro pacchetti. Ad esempio, Mageia ha un numero di pacchetti i cui nomi iniziano kernel
e finiscono in devel
. Questi pacchetti quasi sempre (su Mageia e su qualsiasi sistema operativo che li possiede) forniscono i file di intestazione necessari per compilare i driver dal sorgente per l'uso con il kernel. Possono anche fornire utilità correlate per facilitare. Questi pacchetti:
- non non fornire il codice sorgente completo del kernel. Questo è fornito da altri pacchetti.
- non senza fornire una pre-compilato, il kernel utilizzabile. Questo è fornito da altri pacchetti.
- non senza fornire un compilatore o la maggior parte degli altri strumenti di scopo di compilazione. Anche quelli sono forniti da altri pacchetti.
In Ubuntu, come si può vedere nell'elenco qui , i pacchetti che forniscono le intestazioni del kernel hanno nomi che iniziano con linux-headers
. Di solito è il pacchetto corretto da installare linux-headers-generic
. Tuttavia, per essere sicuro di quale pacchetto installare per ottenere le intestazioni che corrispondono al kernel attualmente in esecuzione, eseguire:
uname -r
Otterrai un output simile a:
3.5.0-36-generic
Cioè, avrai un numero di versione (che includerà .
caratteri e di solito almeno uno -
), seguito da un -
, seguito da una o più parole che indicano quale tipo di kernel stai eseguendo.
Se vuoi solo le intestazioni per la versione specifica che stai eseguendo ora, puoi installare il pacchetto il cui nome è linux-headers-*
dove *
è sostituito dall'output completo di uname -r
. Ad esempio, sul mio sistema, potrei eseguire:
sudo apt-get update && sudo apt-get install linux-headers-3.5.0-36-generic
Potrei persino automatizzarlo:
sudo apt-get update && sudo apt-get install linux-headers-`uname -r`
Questi approcci sono equivalenti, ma di solito non sono il modo migliore di procedere.
Invece, di solito vorrai installare il metapacchetto che fornisce sempre le più recenti intestazioni del kernel come aggiornamento (dipendendo perpetuamente dal pacchetto di intestazione più recente). Ciò è parallelo al modo in cui il kernel compilato ed in esecuzione viene installato e aggiornato. Per fare ciò, guarda solo la parte uname -r
dell'output dopo il numero di versione. Cioè, se uname -r
ti dà 3.5.0-36-generic
, prendi solo la generic
parte.
Quindi installare il pacchetto chiamato linux-headers-*
dove *
viene sostituito da quella parte. Quindi, sul mio sistema, sarebbe linux-headers-generic
e un modo in cui potrei installarlo sarebbe quello di eseguire:
sudo apt-get update && sudo apt-get install linux-headers-generic
Per la maggior parte delle persone è linux-headers-generic
, ma a seconda di ciò che Ubuntu Rilascio si sta eseguendo, ciò che l'architettura e il tipo di dispositivo che si sta eseguendo su, e come esso è installato e configurato, Altre possibilità includono generic-pae
, highbank
, omap
, server
, e virtual
.
Pacchetti correlati
I file di intestazione facilitano lo sviluppo e la compilazione / creazione di software che utilizza le funzionalità fornite dal software i cui file di intestazione vengono utilizzati. Il motivo più comune per cui potresti aver bisogno delle intestazioni del kernel è se hai intenzione di creare un driver (un modulo del kernel) dal codice sorgente. Alcune applicazioni, come VMware e VirtualBox, a volte lo richiederanno e automatizzeranno la build autonomamente.
Oltre ai file di intestazione, per creare software sono necessari un compilatore e altri strumenti. Per massimizzare la probabilità di disporre degli strumenti necessari, è consigliabile installare anche il build-essential
pacchetto.
È insolito che chiunque abbia bisogno del vero codice sorgente completo del kernel (a meno che, ovviamente, non si stia pianificando di costruire il proprio kernel dal sorgente). Ma se ne hai bisogno, dovrai installare anche un altro pacchetto. In Ubuntu viene chiamato il pacchetto per il codice sorgente del kernel completo linux-source
. (Ciò è in accordo con la convenzione Debian / Ubuntu dei pacchetti di denominazione che forniscono parti sostanziali del kernel Linux linux
anziché kernel
.)
Se hai ancora problemi
Se si tenta di installare uno di questi pacchetti ma si verificano problemi e si desidera assistenza, è necessario includere il testo completo ed esatto dal Terminale, comprese le righe in cui sono stati digitati i comandi. Il modo migliore per fornire questo è modificando la tua domanda, ma se è troppo lunga, puoi incollarla da qualche parte come http://paste.ubuntu.com e fornirci l'URL da cui possiamo accedervi.
Se commentate questa domanda, verrò avvisato. Puoi modificare la tua domanda e anche commentare qui per attirare l'attenzione sulle informazioni fornite nella domanda. (Le informazioni importanti sono meglio conservate in domande e risposte.) Buona fortuna!