qual è l'equivalente linux-kernel-devel in 12.04.2 LTS 3.5.0?


14

mi scuso per la domanda noob, ma quando provo a farlo

sudo apt-get install Linux-kernel-devel 

Ottengo quanto segue:

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  

Ho provato quanto segue:

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

senza gioia ... qualche suggerimento?


2
Cosa ti aspetti che faccia il pacchetto linux-kernel-devel? Stai cercando le intestazioni o qualcos'altro?
Robie Basak,

Risposte:


15

Sintesi

Probabilmente vuoi installare il pacchetto chiamato linux-headers-generic.

Se correre uname -rti dà qualcosa di diverso da genericdopo il numero di versione, sostituiscilo con genericin linux-headers-generic. (Questo potrebbe essere servero generic-paesu 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-essentialanche 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 kernelnel nome dei loro pacchetti. Ad esempio, Mageia ha un numero di pacchetti i cui nomi iniziano kernele 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 -rdell'output dopo il numero di versione. Cioè, se uname -rti dà 3.5.0-36-generic, prendi solo la genericparte.

Quindi installare il pacchetto chiamato linux-headers-*dove *viene sostituito da quella parte. Quindi, sul mio sistema, sarebbe linux-headers-generice 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-essentialpacchetto.

È 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 linuxanziché 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!


0

Come diceva il rapporto (E: impossibile localizzare il pacchetto linux-kernel-devel) Non ci sono pacchetti del genere. Puoi installare tutte le versioni del kernel che desideri scaricando i pacchetti del kernel debian da qui

Per esempio; vogliamo installare il kernel 3.9.8 (architettura i386); Scarica tutti i pacchetti ** i386.deb E anche * * * pacchetto all.deb in una cartella. Entra nella cartella con il comando cd nel terminale;

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

Questo installerà la versione del kernel che desideri. È possibile analizzare le versioni della mainline del kernel e le versioni a lungo termine in questo sito


0

Dovrai mappare te stesso di quali deb specifici hai bisogno, ma ci sono i debs di cui avrai bisogno nelle build del kernel di Ubunut .

Onestamente, prima verificherei sudo apt-get updatee poi mi sudo apt-get dist-upgradeassicurerei di eseguire l'ultimo kernel e non dovrò farlo di nuovo a breve.

Quindi guarda l'elenco di compilazione del kernel per la tua versione che corrisponde alla tua uname -r. Devi cercare in ogni build.log per scoprire a quale versione principale stanno mappando quella build. Ho 3.5.0-34 # 55 elencato come il mio kernel, ma questo è davvero mappato per costruire 3.5.7.14-quantale . Installa tutti i debs che corrispondono a quella versione per ottenere le tue intestazioni e simili, e assicurati di avere i tuoi strumenti di costruzionesudo apt-get install build-essential

Il tuo chilometraggio può comunque dipendere da cosa pensi di fare con i file di sviluppo.


0

linux-kernel-devel è il nome di un pacchetto SUSE / Redhat che fornisce cose come genksyms.

Un Google molto veloce suggerisce che linux-headers-generic fornisce genksyms su Debian / Ubuntu.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.