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 Player на путь ядра, я получаю эту ошибку:

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
Не по моему собственному решению. Я установил с веб-сайта последнюю сборку, которую смог. Есть ли способ обновить ядро?
Фантастический мистер Фокс
Большинство поддерживает все пакеты в актуальном состоянии с помощью диспетчера пакетов или в качестве пользователя root, выполняемого 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

Однако я также заметил эту проблему, когда определенные версии заголовков отсутствуют в репозиториях. Возможно, вам придется обратиться к Кодзи, чтобы найти конкретную версию сборки.

Эта страница включает в себя все ресурсы для этой конкретной версии ядра.

SLM
источник
2
Почему это лучше чем yum install "kernel-devel-$(uname -r)"? Из вашего примера, это не даже , кажется, даже работа ...
DRS
1
@drs - Это не работает, потому что нет соответствующих pkgs, которые предоставляют заголовки для моей версии ядра. Использование for -uname-r` - более переносимый способ выполнения работы с pkgs, привязанными к версии ядра. Он используется в большинстве сделок РЕПО , если вы посмотрите на их примерах тоже: rpmfusion.org/Howto/nVidia
ОДС
Это было действительно полезно. Я думал, что установил правильную версию заголовков ядра, очень небольшую разницу в названии, но это было неправильно и не удалось собрать. Вышеприведенная команда помогла мне получить актуальную, а также дала мне лучшее представление о поиске пакетов. Спасибо +1
ФКЛ
Есть ли способ, которым мы можем заставить 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пакет.

DRS
источник
0

Это иногда случается и со мной, устанавливая VMBoxAdditions после обновления системы.

Я должен удалить ядро-разработчиков:

yum remove kernel-devel

а затем переустановите его:

yum install kernel-devel

И тогда волшебным образом это работает.

Andrea
источник
0

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

Жоао Пауло
источник
-2

После всех предложений я обнаружил одну вещь, которая помогла мне исправить это. Я должен был включить репо [elrepo-kernel]. Тогда я смог установить правильные заголовки и kernel-devel

Джим
источник
Это не полный ответ на вопрос. Вы должны либо улучшить свой ответ с более подробной информацией, либо добавить это как комментарий.
Фантастический мистер Фокс
@FantasticMrFox Это ответ на вопрос, хотя и краткий, без объяснения, почему эта процедура необходима, и он дублирует то, что уже сказали другие.
Кусалананда