web-dev-qa-db-fra.com

Quel est l'équivalent linux-kernel-devel dans 12.04.2 LTS 3.5.0?

excuses pour la question noob, mais quand j'essaie de

Sudo apt-get install Linux-kernel-devel 

Je reçois ce qui suit:

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  

J'ai essayé ce qui suit:

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

sans joie ... des suggestions?

14
paschwan

Résumé

Vous voulez probablement installer le paquet nommé linux-headers-generic.

Si exécuter uname -r vous donne autre chose que genericaprès le numéro de version, remplacez-le par genericdans linux-headers-generic. (Cela peut être serverou generic-pae sur certaines installations de certaines versions d'Ubuntu, et il existe quelques autres "variantes" de noyau occasionnelles.)

Etant donné que vous en avez probablement besoin pour pouvoir construire un pilote (ce qui pourrait être automatisé, vous ne pourrez peut-être pas le "construire vous-même"), c'est une bonne idée d'installer également build-essential afin de le créer afin que vous disposiez probablement de tout le nécessaire. outils.

Explication complète

À ma connaissance, aucun système d'exploitation ne dispose d'un package appelé Linux-kernel-devel. C'est pour deux raisons:

  • Les noms de paquets commençant par des majuscules sont extrêmement rares, pour tout système d'exploitation de type Unix.
  • Les systèmes d'exploitation GNU/Linux nomment généralement leurs paquets liés au noyau de manière à ce qu'ils contiennent le mot noya ou le mot linux, mais pas les deux. (Sur Ubuntu, c'est le mot linux.)

Il est courant que les packages liés au noyau sur les systèmes qui utilisent Red Hat Package Manager (rpmname__) et les utilitaires associés aient kerneldans le nom de leurs packages. Par exemple, Mageia a plusieurs packages dont le nom commence par kernelet se termine par develname__. Ces packages fournissent presque toujours (sur Mageia et tout système d'exploitation les contenant) les en-têtes nécessaires à la création des pilotes à partir des sources pour une utilisation avec le noyau. Ils peuvent également fournir des utilitaires connexes pour faciliter. Ces forfaits:

  • do not ​​fournit le code source complet du noyau. C'est fourni par d'autres paquets.
  • do not ​​fournit un noyau utilisable pré-compilé. C'est fourni par d'autres paquets.
  • do not ​​fournit un compilateur ou la plupart des autres outils de construction à usage spécifique. Celles-ci sont également fournies par d'autres packages.

Comme on peut le voir dans Ubuntu dans la liste ici , les paquets qui fournissent les en-têtes du noyau ont des noms qui commencent par linux-headers. Habituellement, le package correct à installer est linux-headers-generic. Cependant, pour être sûr du paquet à installer pour obtenir les en-têtes qui correspondent à votre noyau en cours d'exécution, exécutez:

uname -r

Vous obtiendrez une sortie qui ressemble à quelque chose comme:

3.5.0-36-generic

Autrement dit, vous aurez un numéro de version (qui comprendra . et généralement au moins un -), suivi d'un -, suivi d'un ou plusieurs mots indiquant le type de noyau que vous exécutez.

Si vous juste voulez les en-têtes correspondant à la version que vous utilisez actuellement, vous pouvez installer le paquet portant le nom linux-headers-** est remplacé par la sortie complète de uname -r. Par exemple, sur mon système, je pourrais exécuter:

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

Je pourrais même l'automatiser:

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

Ces approches sont équivalentes, mais elles ne sont généralement pas la meilleure voie à suivre.

Au lieu de cela, vous voudrez généralement installer le méta-paquet qui fournit toujours les derniers en-têtes du noyau sous forme de mise à jour (en permanence, en fonction du paquet d'en-tête le plus récent). Cela correspond à la manière dont votre noyau compilé et en cours d’exécution est installé et mis à jour. Pour ce faire, regardez simplement la partie de la sortie de uname -rafter le numéro de version. Autrement dit, si uname -r vous donne 3.5.0-36-generic, prenez uniquement la partie genericname__.

Installez ensuite le package appelé linux-headers-** est remplacé par cette partie. Donc, sur mon système, ce serait linux-headers-generic et une façon de l’installer serait de lancer:

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

Pour la plupart des gens, il s'agit de linux-headers-generic, mais en fonction de la version d'Ubuntu que vous exécutez, de l'architecture et du type de périphérique sur lesquels vous l'exécutez, ainsi que de son installation et de sa configuration, les autres possibilités incluent generic-pae, highbankname__, omapname__, servername__, et virtualname__.

Forfaits connexes

Fichiers d'en-tête faciliter le développement et la compilation/construction de logiciels utilisant les fonctions fournies par le logiciel dont les fichiers d'en-tête sont utilisés. La raison la plus courante pour laquelle vous pourriez avoir besoin des en-têtes du noyau est si vous voulez créer un pilote (un module du noyau) à partir du code source. Certaines applications, telles que VMware et VirtualBox, en ont parfois besoin et automatisent elles-mêmes la construction.

En plus des fichiers d’en-tête, un compilateur et d’autres outils sont nécessaires pour créer le logiciel. Pour maximiser les chances que vous disposiez des outils nécessaires, il est également judicieux d'installer le package build-essential.

Il est rare que quiconque ait besoin du code source complet du noyau (à moins, bien sûr, que vous envisagiez de construire votre noyau à partir du source). Mais si vous en avez besoin, vous devrez également installer un autre paquet. Dans Ubuntu, le paquet pour le code source complet du noyau s'appelle linux-source. (Ceci est conforme à la convention Debian/Ubuntu de nommer les paquets qui fournissent des parties substantives du noyau Linux linuxau lieu de kernelname__.)

Si vous avez toujours des problèmes

Si vous essayez d'installer l'un de ces packages mais que vous rencontrez des problèmes et que vous souhaitez obtenir de l'aide, vous devez inclure le texte complet et exact du terminal, y compris les lignes dans lesquelles vous avez tapé des commandes. La meilleure façon de le savoir est d’éditer votre question, mais si elle est trop longue, vous pouvez la coller quelque part comme http://paste.ubuntu.com et nous fournir l’URL où nous pourrons y accéder.

Si vous commentez cette question, je serai averti. Vous pouvez modifier votre question et commenter ici pour attirer l’attention sur les informations que vous avez fournies. (Il est préférable de conserver les informations importantes sous forme de questions et de réponses.) Bonne chance!

15
Eliah Kagan

Comme l'indique le rapport (E: impossible de localiser le paquet linux-kernel-devel). Il n'y a pas de paquet de ce type. Vous pouvez installer chaque version de noyau de votre choix en téléchargeant les packages de noyau Debian à partir de ici

Par exemple; nous voulons installer le noyau 3.9.8 (architecture i386); Télécharger tous les packages ** i386.deb et également * * * all.deb dans un dossier . Entrez dans le dossier avec la commande cd dans le terminal;

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

Cela installera la version du noyau que vous voulez. Vous pouvez analyser les versions des versions principale et à long terme du noyau dans ce site

0
ubuntu_tr

Vous devrez définir vous-même les deb spécifiques dont vous avez besoin, mais il y a les debs dont vous aurez besoin dans la construction du noyau d'Ubunut .

Honnêtement, je vérifierais d'abord avec Sudo apt-get update puis Sudo apt-get dist-upgrade pour m'assurer que vous exécutez le dernier noyau et que vous n'aurez pas besoin de le refaire sous peu.

Recherchez ensuite dans la liste de construction du noyau la version correspondant à votre uname -r. Vous devez examiner chaque build build.log pour déterminer la version de la tête vers laquelle ils sont mappés. Le noyau 3.5.0-34 N ° 55 est répertorié comme mon noyau, mais cela permet vraiment de construire .5.7.14-quantal . Installez tous les debs qui correspondent à cette version pour obtenir vos en-têtes et autres, et assurez-vous que vous avez vos outils de construction avec Sudo apt-get install build-essential

Votre kilométrage peut toutefois varier en fonction de ce que vous envisagez de faire avec les fichiers de développement.

0
Kallor

linux-kernel-devel est le nom d'un paquet SUSE/Redhat fournissant des éléments tels que genksyms.

Un très rapide Google suggère que linux-headers-generic fournit genksyms sur Debian/Ubuntu.

0
Tim Baverstock