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


14

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

sudo apt-get install Linux-kernel-devel 

J'obtiens 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?


2
Qu'attendez-vous du paquet linux-kernel-devel? Cherchez-vous les en-têtes, ou autre chose?
Robie Basak

Réponses:


15

Résumé

Vous souhaiterez probablement installer le package appelé linux-headers-generic.

Si l'exécution uname -rvous donne autre chose genericqu'après le numéro de version, remplacez-le par genericdans linux-headers-generic. (Cela peut être sur serverou generic-paesur certaines installations de certaines versions d'Ubuntu, et il existe quelques autres "saveurs" occasionnelles du noyau.)

Étant donné que vous en avez probablement besoin pour pouvoir créer un pilote (qui pourrait être automatisé, vous ne pourrez peut-être pas le "construire vous-même"), c'est une bonne idée de l'installer build-essentialaussi pour le faire, vous aurez donc probablement tous les outils nécessaires .

Explication complète

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

  • Les noms de packages 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 packages liés au noyau de sorte que les noms contiennent le mot noyau 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 ( rpm) et les utilitaires associés aient kernelle nom de leurs packages. Par exemple, Mageia a un certain nombre de packages dont les noms commencent par kernelet finissent par devel. Ces packages fournissent presque toujours (sur Mageia et tout système d'exploitation qui en dispose) les fichiers d'en-tête nécessaires pour créer des pilotes à partir des sources à utiliser avec le noyau. Ils peuvent également fournir des utilitaires connexes pour faciliter. Ces packages:

  • ne fournissez pas le code source complet du noyau. Cela est fourni par d'autres packages.
  • ne fournissent pas de noyau pré-compilé et utilisable. Cela est fourni par d'autres packages.
  • ne fournissez pas de compilateur ni la plupart des autres outils de création à des fins spécifiques. Celles-ci sont également fournies par d'autres packages.

Dans Ubuntu, comme on peut le voir dans la liste ici , les packages qui fournissent les en-têtes du noyau ont des noms commençant par linux-headers. Généralement, le package correct à installer est linux-headers-generic. Cependant, pour être sûr du package à installer pour obtenir des en-têtes correspondant à 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 des .caractères et généralement au moins un -), suivi d'un -, suivi d'un ou plusieurs mots indiquant le type de noyau que vous utilisez.

Si vous souhaitez simplement que les en-têtes de la version spécifique que vous exécutez actuellement, vous pouvez installer le package dont le nom est 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 souhaiterez généralement installer le métapaquet qui fournit toujours les en-têtes de noyau les plus récents en tant que mise à jour (en fonction en permanence du package d'en-tête le plus récent). Cela est parallèle à la façon dont votre noyau compilé et en cours d'exécution est installé et mis à jour. Pour ce faire, regardez juste la partie de uname -rla sortie de après le numéro de version. Autrement dit, si cela uname -rvous donne 3.5.0-36-generic, prenez juste la genericpartie.

Installez ensuite le package appelé linux-headers-*where *est remplacé par cette partie. Donc, sur mon système, ce serait linux-headers-genericet une façon de l'installer serait d'exécuter:

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

Pour la plupart des gens , il est linux-headers-generic, mais en fonction de ce que vous fermiez Ubuntu vous utilisez, ce que l' architecture et le type d'appareil que vous utilisez sur, et comment il est installé et configuré, d' autres possibilités comprennent generic-pae, highbank, omap, serveret virtual.

Forfaits associés

Les fichiers d'en-tête facilitent le développement et la compilation / construction d'un logiciel qui utilise les fonctionnalités 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 allez construire un pilote (un module du noyau) à partir du code source. Certaines applications, comme VMware et VirtualBox, en auront parfois besoin et automatiseront elles-mêmes la construction.

En plus des fichiers d'en-tête, pour construire un logiciel, un compilateur et d'autres outils sont nécessaires. Pour maximiser la probabilité que vous ayez les outils nécessaires, c'est également une bonne idée d'installer le build-essentialpackage.

Il est rare que quiconque ait besoin du code source complet du noyau (sauf, bien sûr, si vous prévoyez de construire votre noyau à partir des sources). Mais si vous en avez besoin, vous devrez également installer un autre package. Dans Ubuntu, le package du code source complet du noyau est appelé linux-source. (Cela est conforme à la convention Debian / Ubuntu de nommer les paquets qui fournissent des parties substantielles du noyau Linux linuxplutôt que kernel.)

Si vous avez toujours des problèmes

Si vous essayez d'installer l'un de ces packages mais rencontrez des problèmes et que vous souhaitez de l'aide, vous devrez inclure le texte complet et exact du terminal, y compris les lignes où vous avez tapé les commandes. La meilleure façon d'y parvenir est de modifier 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 pouvons y accéder.

Si vous commentez cette question, je serai informé. Vous pouvez modifier votre question et également commenter ici pour attirer l'attention sur les informations que vous avez fournies dans votre question. (Les informations importantes sont mieux conservées dans les questions et réponses.) Bonne chance!


0

Comme le rapport l'indique (E: impossible de localiser le paquet linux-kernel-devel) Il n'y a pas de paquet comme ça. Vous pouvez installer toutes les versions de noyau que vous souhaitez en téléchargeant les paquets du noyau debian à partir d' ici

Par exemple; nous voulons installer le noyau 3.9.8 (architecture i386); Téléchargez tous les packages ** i386.deb Et aussi * * * le package all.deb dans un dossier. Accédez au 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 souhaitez. Vous pouvez analyser les versions de la ligne principale du noyau et les versions à long terme dans ce site


0

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

Honnêtement, je vérifierais d'abord avec sudo apt-get updatepuis sudo apt-get dist-upgradepour vous assurer que vous exécutez le dernier noyau et n'aurai pas besoin de le faire à nouveau sous peu.

Ensuite, regardez dans la liste de construction du noyau pour votre version qui correspond à votre uname -r. Vous devez regarder dans chaque build build.log pour savoir à quelle version principale ils mappent cette build. J'ai 3.5.0-34 # 55 répertorié comme mon noyau, mais cela correspond vraiment à la construction de 3.5.7.14-quantal . Installez tous les deb qui correspondent à cette version pour obtenir vos en-têtes et autres, et assurez-vous d'avoir vos outils de construction avecsudo apt-get install build-essential

Votre kilométrage peut très bien dépendre de ce que vous prévoyez de faire avec les fichiers de développement.


0

linux-kernel-devel est le nom d'un paquet SUSE / Redhat fournissant des choses comme des génksymes.

Un Google très rapide suggère que linux-headers-generic fournit des génksymes sur Debian / Ubuntu.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.