yum installiert eine andere Kernel-Entwicklung als meine Kernel-Version

32

Ich versuche, den VMWare-Player in Fedora 19 zu installieren. Ich habe das Problem, dass mehrere Benutzer hatten, bei denen der VMware-Player die Kernel-Header nicht finden kann. Ich habe die Pakete kernel-headersund kernel-develdurch installiert yumund die Datei, die in angezeigt wird, /usr/src/kernelsist:

3.12.8-200.fc19.x86_64

Wenn ich jedoch uname -rmeine Fedora-Kernel-Version mache, ist das:

3.9.5-301.fc19.x86_64

Das ist eine andere Version. Dies scheint zu bedeuten, dass, wenn ich VMware Player auf den Pfad des Kernels zeige, der folgende Fehler auftritt:

C header files matching your running kernel were not found.  
Refer to your distribution's documentation for installation instructions.

Wie kann ich den richtigen Kernel installieren und wo sollte ich auf VMware verweisen, wenn dies nicht der Fall ist /usr/src/kernels/<my-kernel>?

Fantastischer Herr Fox
quelle
Nur neugierig ... Warum lässt du nicht den neuesten Kernel in Fedora 19 laufen?
Rickhg12hs
Nicht durch meine eigene Entscheidung. Ich habe von der Webiste den neuesten Build installiert, den ich konnte. Gibt es eine Möglichkeit, den Kernel zu aktualisieren?
Fantastische Mr Fox
Die meisten halten alle Pakete auf dem neuesten Stand, indem sie den Paket-Manager oder als Root yum updateüber eine Befehlszeile ausführen . Häufig erledigt und mit einer anständigen Internetverbindung dauert es nicht lange, aber Sie müssen ein bisschen nachholen. Um den neuen Kernel zu verwenden, müssen Sie nach Abschluss des Updates einen Neustart durchführen.
Rickhg12hs

Antworten:

33

Sie können die richtigen Kernel-Header-Dateien folgendermaßen installieren:

$ sudo yum install "kernel-devel-uname-r == $(uname -r)"

Beispiel

Dieser Befehl installiert immer die richtige Version.

$ sudo yum install "kernel-devel-uname-r == $(uname -r)"
Loaded plugins: auto-update-debuginfo, changelog, langpacks, refresh-packagekit
No package kernel-devel-uname-r == 3.12.6-200.fc19.x86_64 available.
Error: Nothing to do

Oder du kannst sie so suchen:

$ yum search "kernel-headers-uname-r == $(uname -r)" --disableexcludes=all
Loaded plugins: auto-update-debuginfo, changelog, langpacks, refresh-packagekit
Warning: No matches found for: kernel-headers-uname-r == 3.12.6-200.fc19.x86_64
No matches found

Allerdings habe ich dieses Problem auch bemerkt, wenn bestimmte Versionen von Headern nicht in den Repositorys vorhanden sind. Möglicherweise müssen Sie nach Koji greifen, um eine bestimmte Version eines Builds zu finden.

Diese Seite enthält alle Assets für diese bestimmte Version des Kernels.

slm
quelle
2
Warum ist das besser als yum install "kernel-devel-$(uname -r)"? Nach Ihrem Beispiel scheint es nicht einmal zu funktionieren ...
drs
1
@drs - Es funktioniert nicht, da es keine passenden pkgs gibt, die die Header für meine Kernel-Version liefern. Die Verwendung von for -uname-r ist eine portablere Möglichkeit, Arbeiten mit Paketen auszuführen, die an die Kernel-Version gebunden sind. Es wird auf den meisten Repos verwendet, wenn Sie sich auch deren Beispiele ansehen
slm
Das war sehr hilfreich. Ich dachte, ich hätte die richtige Version der Kernel-Header installiert, ein sehr kleiner Unterschied im Namen, aber es war nicht korrekt und konnte nicht erstellt werden. Der obige Befehl hat mir geholfen, den aktuellen zu finden und mir einen besseren Einblick in die Paketsuche zu geben. Danke +1
fkl
Gibt es eine Möglichkeit, yum / dnf zu veranlassen, automatisch neue Kernel-Header zu installieren, wenn der Kernel aktualisiert wird?
Shankar Narayanan
2
Wo finde ich Informationen / Dokumentation zu dieser Syntax "kernel-devel-uname-r == $(uname -r)"?
Vadim Kotov
8

Verteilungssynchronisation

Ihr Problem könnte "Verteilungssynchronisation" sein. Das Ausführen dieses Befehls löste mein Problem.

yum distro-sync

Synchronisiert den installierten Paketsatz mit den neuesten verfügbaren Paketen. Dies erfolgt entweder durch Veralten, Upgraden oder Downgraden. ( http://man7.org/linux/man-pages/man8/yum.8.html )

duftend
quelle
4

Sie können eine bestimmte Version eines Pakets installieren, indem Sie die Version zusammen mit dem Paketnamen mit angeben yum. Wenn Sie beispielsweise die Kernel-Entwicklungsdateien für den von Ihnen ausgeführten Kernel installieren möchten, geben Sie Folgendes ein

yum install kernel-devel-3.9.5-301.fc19

Sie können einen ähnlichen Befehl ausführen, um das richtige kernel-headersPaket zu erhalten.

drs
quelle
0

Es passiert manchmal auch mir, VMBoxAdditions nach einem Systemupdate zu installieren.

Ich muss Kernel-Devs entfernen :

yum remove kernel-devel

und dann neu installieren:

yum install kernel-devel

Und dann magisch funktioniert es.

Andrea
quelle
0

Nach dem Update des Kernels bin ich auf dasselbe gestoßen, und Jims Antwort hat mir sehr geholfen. Um das [elrepo-kerne] -Repo zu aktivieren , gehen Sie zu /etc/yum.repos.d/elrepo.repoDatei und stellen Sie enabled=1(anstatt enabled=0) für [elrepo-kernel] ein. Führen Sie dann das durch die Antwort von slm angegebene Update aus. Danach kehren Sie zum um enabled=0, damit das Yum nicht mit diesem Repo interagiert. Der Befehl yum repolist allzeigt Ihnen alle aktivierten und deaktivierten Repos.

João Paulo
quelle
-2

Nachdem ich allen Vorschlägen gefolgt war, fand ich eine Sache an meinem Ende, die dazu beitrug, das Problem zu beheben. Ich musste das [elrepo-kernel] -repo aktivieren. Dann konnte ich die richtigen Header und Kernel-Entwickler installieren

Jim
quelle
Dies ist keine vollständige Antwort auf die Frage. Sie sollten entweder Ihre Antwort mit mehr Details verbessern oder dies als Kommentar hinzufügen.
Fantastische Mr Fox
@FantasticMrFox Dies ist eine Antwort auf die Frage, wenn auch eine kurze Antwort ohne Erklärung, warum diese Prozedur notwendig ist, und sie dupliziert das, was andere bereits gesagt haben.
Kusalananda