yum встановлює kernel-devel, відмінний від моєї версії ядра


32

Я намагаюся встановити програвач VMWare у Fedora 19. У мене виникає проблема, що у багатьох користувачів виникло те, що програвач VMware не може знайти заголовки ядра. Я встановив kernel-headersі kernel-develпакети через, yumі файл, який з'являється в, /usr/src/kernelsце:

3.12.8-200.fc19.x86_64

Однак, коли я роблю uname -rсвою версію ядра Fedora, це:

3.9.5-301.fc19.x86_64

що є іншою версією. Це, мабуть, означає, що коли я вказую програвач VMware на шлях ядер, я отримую цю помилку:

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

Як я можу встановити правильне ядро ​​і де я повинен вказувати VMware, якщо його немає /usr/src/kernels/<my-kernel>?


Просто цікаво ... Чому ви не запускаєте останнє ядро ​​у Fedora 19?
rickhg12hs

Не за власним рішенням. Я встановив із веб-сторінки останню версію, яку я міг. Чи є спосіб оновити ядро?
Фантастичний містер Фокс

Більшість підтримує актуальність усіх пакунків за допомогою диспетчера пакетів або як кореневого виконання yum updateз командного рядка. Робиться часто, і при гідному підключенні до Інтернету це не займе багато часу, але вам доведеться трохи догнати. Щоб використовувати нове ядро, вам потрібно буде перезавантажити після завершення оновлення.
rickhg12hs

Відповіді:


33

Ви можете встановити правильні файли заголовка ядра так:

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

Приклад

Ця команда завжди встановлюватиме правильну версію.

$ 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

Або ви можете шукати їх так:

$ 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

Однак я помітив і це питання, коли конкретні версії заголовків відсутні у сховищах. Можливо, вам доведеться зайти в Koji, щоб знайти конкретну версію збірки.

Ця сторінка містить усі активи для цієї конкретної версії ядра.


2
Чому це краще, ніж yum install "kernel-devel-$(uname -r)"? З вашого прикладу це, здається, навіть не працює ...
drs

1
@drs - не працює b / c. Немає відповідних pkgs, які забезпечують заголовки для моєї версії ядра. Використання for -uname-r` - це більш портативний спосіб виконання роботи з pkgs, прив'язаним до версії ядра. Він використовується в більшості репостів, якщо ви також подивитеся на їхні приклади: rpmfusion.org/Howto/nVidia
slm

Це було дуже корисно. Я думав, що я встановив правильну версію заголовків ядра, дуже невелика різниця в імені, але це було неправильно і не вдалося створити. Наведена вище команда допомогла мені зрозуміти фактичну, а також краще зрозуміти пошук пакунків. Дякую +1
fkl

Чи є спосіб, щоб ми могли змусити yum / dnf автоматично встановлювати нові заголовки ядра, коли він оновлює ядро?
Шанкар Нараянан

2
@slm де я можу знайти будь-яку інформацію / документацію щодо цього синтаксису "kernel-devel-uname-r == $(uname -r)":?
Вадим Котов

8

Синхронізація розподілу

Вашою проблемою може бути "синхронізація розподілу". Виконання цієї команди вирішило мою проблему.

yum distro-sync

Синхронізується встановлений набір пакетів з останніми доступними пакетами, це робиться шляхом моральної застарівання, оновлення або пониження версії, якщо потрібно. ( http://man7.org/linux/man-pages/man8/yum.8.html )


4

Ви можете встановити конкретну версію пакета, вказавши версію разом із назвою пакета yum. Наприклад, щоб встановити файли розвитку ядра для конкретного ядра, яке ви працюєте, введіть

yum install kernel-devel-3.9.5-301.fc19

Ви можете виконати подібну команду, щоб отримати потрібний kernel-headersпакет.


0

Інколи трапляється і зі мною, встановлюючи VMBoxAdditions після оновлення системи.

Я повинен видалити kernel-devs:

yum remove kernel-devel

а потім знову встановіть його:

yum install kernel-devel

І тоді магічно це спрацьовує.


0

Я натрапив на те саме, що після оновлення ядра, і відповідь Джима дуже допомогла. Щоб увімкнути репорт [elrepo-kerne] , перейдіть до /etc/yum.repos.d/elrepo.repoфайлу та встановіть enabled=1(а не enabled=0) для [elrepo-kernel] , після чого зробіть оновлення, повідомлене відповіддю slm. Після цього переверніть на enabled=0, щоб ням не взаємодів із цим репо. Тільки для того, щоб вказати, команда yum repolist allпокаже вам всі включені та відключені репозиції.


-2

Після дотримання всіх пропозицій я знайшов одне, що допомогло це виправити. Мені довелося включити репо [elrepo-kernel]. Тоді я зміг встановити правильні заголовки та kernel-devel


Це не повна відповідь на питання. Вам слід або вдосконалити свою відповідь більш детально, або додати це як коментар.
Фантастичний містер Фокс

@FantasticMrFox Це відповідь на питання, хоч і коротка відповідь без пояснень, чому необхідна ця процедура, і вона дублює те, що вже сказали інші.
Kusalananda
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.