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?
Vous voulez probablement installer le paquet nommé linux-headers-generic
.
Si exécuter uname -r
vous donne autre chose que generic
après le numéro de version, remplacez-le par generic
dans linux-headers-generic
. (Cela peut être server
ou 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.
À ma connaissance, aucun système d'exploitation ne dispose d'un package appelé Linux-kernel-devel
. C'est pour deux raisons:
Il est courant que les packages liés au noyau sur les systèmes qui utilisent Red Hat Package Manager (rpm
name__) et les utilitaires associés aient kernel
dans le nom de leurs packages. Par exemple, Mageia a plusieurs packages dont le nom commence par kernel
et se termine par devel
name__. 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:
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-*
où *
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 -r
after le numéro de version. Autrement dit, si uname -r
vous donne 3.5.0-36-generic
, prenez uniquement la partie generic
name__.
Installez ensuite le package appelé linux-headers-*
où *
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
, highbank
name__, omap
name__, server
name__, et virtual
name__.
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 linux
au lieu de kernel
name__.)
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!
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
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.
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.