Was ist das Äquivalent zum Linux-Kernel-Entwickler in 12.04.2 LTS 3.5.0?

14

entschuldigung für die noob frage, aber wenn ich es versuche

sudo apt-get install Linux-kernel-devel 

Ich bekomme folgendes:

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  

Ich habe Folgendes versucht:

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

ohne freude ... irgendwelche vorschläge?

Paschwan
quelle
2
Was erwartet ihr von dem Paket linux-kernel-devel? Suchen Sie nach den Überschriften oder nach etwas anderem?
Robie Basak

Antworten:

15

Zusammenfassung

Sie möchten wahrscheinlich das aufgerufene Paket installieren linux-headers-generic.

Wenn beim Ausführen uname -retwas anderes als genericdie Versionsnummer angezeigt wird, ersetzen Sie dies durch genericin linux-headers-generic. (Dies kann in serveroder generic-paeauf einigen Installationen einiger Ubuntu-Versionen der Fall sein , und es gibt auch einige andere gelegentliche "Kernel-Varianten".)

Da dies höchstwahrscheinlich erforderlich ist, damit Sie einen Treiber erstellen können (der möglicherweise automatisiert ist und möglicherweise nicht "selbst erstellt" wird), ist es eine gute Idee, dies ebenfalls zu installieren build-essential, damit Sie wahrscheinlich über alle erforderlichen Tools verfügen .

Vollständige Erklärung

Meines Wissens hat kein Betriebssystem ein Paket namens Linux-kernel-devel. Dies hat zwei Gründe:

  • Paketnamen, die mit Großbuchstaben beginnen, sind unter Unix-ähnlichen Betriebssystemen äußerst selten.
  • GNU / Linux-Betriebssysteme benennen normalerweise ihre Kernel-bezogenen Pakete so, dass die Namen das Wort Kernel oder das Wort Linux enthalten , aber nicht beide. (Unter Ubuntu ist es das Wort Linux .)

Es ist üblich, dass Kernel-bezogene Pakete auf Systemen, die den Red Hat Package Manager ( rpm) und verwandte Dienstprogramme verwenden, kernelim Namen ihrer Pakete enthalten sind. Zum Beispiel hat Mageia eine Reihe von Paketen, deren Namen mit beginnen kernelund mit enden devel. Diese Pakete (auf Mageia und jedem Betriebssystem, auf dem sie installiert sind) enthalten fast immer die Header-Dateien, die zum Erstellen von Treibern aus dem Quellcode für die Verwendung mit dem Kernel erforderlich sind. Sie können auch verwandte Hilfsprogramme bereitstellen, um dies zu erleichtern. Diese Pakete:

  • Geben Sie nicht den vollständigen Quellcode des Kernels an. Das wird von anderen Paketen bereitgestellt.
  • Stellen Sie keinen vorkompilierten, verwendbaren Kernel bereit. Das wird von anderen Paketen bereitgestellt.
  • Stellen Sie keinen Compiler oder die meisten anderen Tools zur Erstellung von Zwecken bereit. Auch diese werden von anderen Paketen bereitgestellt.

In Ubuntu haben die Pakete, die Kernel-Header bereitstellen, Namen, die mit beginnen , wie in der Liste hier zu sehen ist linux-headers. Normalerweise ist das richtige zu installierende Paket linux-headers-generic. Um jedoch sicherzugehen, welches Paket installiert werden muss, um Header zu erhalten, die Ihrem aktuell ausgeführten Kernel entsprechen, führen Sie Folgendes aus:

uname -r

Sie erhalten eine Ausgabe, die ungefähr so ​​aussieht:

3.5.0-36-generic

Das heißt, Sie haben eine Versionsnummer (die .Zeichen und normalerweise mindestens eine enthält -), gefolgt von einem -, gefolgt von einem oder mehreren Wörtern, die angeben, welche Art von Kernel Sie ausführen.

Wenn Sie nur die Header für die spezifische Version wollen passieren Sie jetzt ausgeführt werden, können Sie das Paket , dessen Name installieren ist , linux-headers-*wo *durch die volle Leistung von ersetzt wird uname -r. Auf meinem System könnte ich beispielsweise Folgendes ausführen:

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

Ich könnte es sogar automatisieren:

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

Diese Ansätze sind äquivalent, aber normalerweise nicht der beste Weg.

Stattdessen möchten Sie normalerweise das Metapaket installieren, das immer die neuesten Kernel-Header als Update bereitstellt (je nachdem, welches Header-Paket aktuell ist). Dies entspricht der Art und Weise, wie Ihr kompilierter, laufender Kernel installiert und aktualisiert wird. Sehen Sie sich dazu einfach den Teil der uname -rAusgabe nach der Versionsnummer an. Das heißt, wenn uname -rSie geben 3.5.0-36-generic, nehmen Sie nur den genericTeil.

Installieren Sie dann das Paket mit dem Namen linux-headers-*where, *das durch diesen Teil ersetzt wird. Auf meinem System wäre es also linux-headers-genericeine Möglichkeit , es zu installieren:

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

Für die meisten Menschen ist es linux-headers-generic, aber je nachdem , was Ubuntu - Version Sie laufen, was Architektur und Art von Gerät sind Sie es auf ausgeführt wird , und wie es installiert und konfiguriert ist , andere Möglichkeiten umfassen generic-pae, highbank, omap, server, und virtual.

Verwandte Pakete

Header-Dateien erleichtern das Entwickeln und Kompilieren / Erstellen von Software, die Funktionen verwendet, die von der Software bereitgestellt werden, deren Header-Dateien verwendet werden. Der häufigste Grund, warum Sie Kernel-Header benötigen, ist, wenn Sie einen Treiber (ein Kernel-Modul) aus dem Quellcode erstellen. Einige Anwendungen, wie VMware und VirtualBox, erfordern dies manchmal und automatisieren den Build selbst.

Zusätzlich zu Header-Dateien werden zum Erstellen von Software ein Compiler und andere Tools benötigt. Um die Wahrscheinlichkeit zu maximieren, dass Sie über die erforderlichen Tools verfügen, sollten Sie das build-essentialPaket auch installieren .

Es ist ungewöhnlich, dass jemand den vollständigen Kernel-Quellcode benötigt (es sei denn, Sie planen natürlich, Ihren Kernel aus dem Quellcode zu erstellen). Aber wenn Sie das brauchen, müssen Sie auch ein anderes Paket installieren. In Ubuntu heißt das Paket für den vollständigen Kernel-Quellcode linux-source. (Dies steht im Einklang mit der Debian / Ubuntu-Konvention, Pakete zu benennen, die wesentliche Teile des Linux-Kernels enthalten, linuxanstatt kernel.)

Wenn Sie immer noch Probleme haben

Wenn Sie versuchen, eines dieser Pakete zu installieren, aber auf Probleme stoßen und Hilfe benötigen, müssen Sie den vollständigen und genauen Text aus dem Terminal einschließlich der Zeilen, in die Sie Befehle eingegeben haben, einfügen. Die beste Möglichkeit, dies zu tun, besteht darin, Ihre Frage zu bearbeiten. Wenn sie jedoch zu lang ist, können Sie sie an einer Stelle wie http://paste.ubuntu.com einfügen und uns die URL mitteilen , über die wir darauf zugreifen können.

Wenn Sie diese Frage kommentieren, werde ich benachrichtigt. Sie können Ihre Frage hier bearbeiten und auch kommentieren, um auf die Informationen aufmerksam zu machen, die Sie in Ihrer Frage angegeben haben. (Wichtige Informationen werden am besten in Fragen und Antworten aufbewahrt.) Viel Glück!

Eliah Kagan
quelle
0

Wie der Bericht sagte (E: Das Paket linux-kernel-devel konnte nicht gefunden werden) Es gibt keine derartigen Pakete. Sie können jede gewünschte Kernel-Version installieren, indem Sie die debian-Kernel-Pakete von hier herunterladen

Beispielsweise; Wir möchten Kernel 3.9.8 (i386 Architektur) installieren. Laden Sie alle ** i386.deb-Pakete und auch * * * all.deb-Pakete in einen Ordner herunter. Gehen Sie mit dem Befehl cd im Terminal in den Ordner.

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

Dadurch wird die gewünschte Kernelversion installiert. Sie können die Versionen der Kernel-Haupt- und Langzeitversionen auf dieser Site analysieren

ubuntu_tr
quelle
0

Sie müssen selbst herausfinden, welche spezifischen Debs Sie benötigen, aber es gibt die Debs, die Sie in Ubunuts Kernel-Builds benötigen .

Ehrlich gesagt würde ich zuerst nachfragen sudo apt-get updateund dann sudo apt-get dist-upgradesicherstellen, dass Sie den neuesten Kernel ausführen und dies nicht in Kürze wiederholen müssen.

Sehen Sie sich als Nächstes die Kernel-Build-Liste für Ihre Version an, die zu Ihrer passt uname -r. Sie müssen in jedem builds build.log nachsehen, auf welche head-Version sie diesen build abbilden. Ich habe 3.5.0-34 # 55 als meinen Kernel aufgelistet, aber das ist wirklich so, dass es 3.5.7.14-quantal erstellt . Installieren Sie alle Debs, die dieser Version entsprechen, um Ihre Header und dergleichen zu erhalten, und stellen Sie sicher, dass Sie über Ihre Build-Tools verfügensudo apt-get install build-essential

Ihr Kilometerstand hängt jedoch davon ab, was Sie mit den Entwicklungsdateien vorhaben.

Kallor
quelle
0

linux-kernel-devel ist der Name eines SUSE / Redhat-Pakets, das Dinge wie genksyms enthält.

Ein sehr schnelles Google schlägt vor, dass Linux-Header-Generika Genksyms auf Debian / Ubuntu bereitstellen.

Tim Baverstock
quelle