Вопрос или проблема
Я не могу понять, как установить kernel-headers/devel-4.x на CentOS7. Я хочу скомпилировать программу, используя заголовки более поздней версии ядра, не обновляя CentOS.
Я использую CentOS 7.9 (ядро: 3.10.0-1160.24.1.el7.x86_64), но этот вопрос относится к любому уровню CentOS7.
Я пробовал:
yum install kernel-devel-4.18.0-240.15.1.el8_3.x86_64
И
yum install https://vault.centos.org/8.3.2011/BaseOS/Source/SPackages/kernel-4.18.0-240.15.1.el8_3.src.rpm
Вот мой список репозиториев:
# yum repolist
Загруженные плагины: fastestmirror, ovl
Загрузка скоростей зеркал из кэшированного файла
epel/x86_64/metalink | 4.6 kB 00:00:00
* base: la.mirrors.clouvider.net
* epel: mirror.twinlakes.net
* extras: mirror.keystealth.org
* updates: centos.mirror.ndchost.com
epel | 4.7 kB 00:00:00
(1/3): epel/x86_64/group_gz | 96 kB 00:00:00
(2/3): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(3/3): epel/x86_64/primary_db | 6.9 MB 00:00:00
repo id repo name status
base/7/x86_64 CentOS-7 - Base 10072
epel/x86_64 Дополнительные пакеты для Enterprise Linux 7 - x86_64 13576
extras/7/x86_64 CentOS-7 - Extras 468
updates/7/x86_64 CentOS-7 - Updates 1924
repolist: 26040
Мне нужно добавить репозиторий здесь? Я не смог этого выяснить.
Версия ядра, которую вы рассматриваете, является ядром CentOS 8, которое недоступно на CentOS 7.
Если вы хотите более новое ядро на CentOS7, вы можете получить ядро 5.4 в настоящее время с помощью пакета ELRepo kernel-lt (текущее “долгосрочное” ядро на апрель 2021 года) или ядро 5.11 с пакетом kernel-ml (основное ядро). Каждый из них имеет свои собственные пакеты -devel и связанные.
Я бы предложил пакеты ELrepo вместо того, чтобы пытаться запустить ядро CentOS 8 на CentOS 7.
Ответ или решение
Установка заголовков ядра и пакета разработки ядра (kernel-headers/devel) определённой версии на CentOS 7 требует внимательного подхода, особенно если необходимо использовать заголовки более новой версии ядра, чем та, что установлена в вашей системе. В данном ответе мы рассмотрим основные шаги, необходимые для установки заголовков и разработок ядра на CentOS 7, основываясь на ваших требованиях.
Шаг 1: Проверка текущей версии ядра
Перед началом установки важно убедиться в том, какая версия ядра установлена на вашей системе. Это можно сделать с помощью следующей команды:
uname -r
Если вы видите, что ваша версия ядра — 3.10.0-1160.el7.x86_64, значит, вам нужно установить пакеты для более поздних версий ядра, например, 4.x или даже 5.x.
Шаг 2: Установка ELRepo
CentOS 7 не поддерживает более новые версии ядра, такие как 4 или 5, из официальных репозиториев. Вместо этого, рекомендуем использовать репозиторий ELRepo, который предлагает альтернативные версии ядра.
- Сначала установите репозиторий ELRepo:
sudo yum install epel-release
sudo yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
- После установки, активируйте репозиторий с ядрами:
sudo yum --enablerepo=elrepo-kernel install kernel-lt kernel-lt-devel
или для основной версии ядра:
sudo yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel
Шаг 3: Установка необходимых пакетов
После успешной установки репозитория ELRepo вы можете установить нужные вам пакеты:
sudo yum install kernel-lt-devel # или kernel-ml-devel для основной версии
Это установит необходимые заголовки и пакеты разработки для более нового ядра.
Шаг 4: Перезагрузка системы
После установки нового ядра не забудьте перезагрузить вашу систему для применения изменений:
sudo reboot
Шаг 5: Проверка новой версии ядра
После перезагрузки проверьте, установилась ли новая версия ядра:
uname -r
Убедитесь, что отображается версия нового ядра (например, 5.4.x или 5.11.x).
Шаг 6: Установка других зависимостей
При компиляции вашего программного обеспечения могут потребоваться дополнительные пакеты разработки. Установите их с помощью:
sudo yum groupinstall "Development Tools"
Заключение
В приведённых выше инструкциях вы узнали, как установить заголовки и пакеты разработки для более новых версий ядра на CentOS 7 с помощью репозитория ELRepo. Это решение позволяет вам компилировать программы с использованием более современных возможностей ядра без необходимости обновления самой системы CentOS. Если у вас возникнут дополнительные вопросы по этому процессу, не стесняйтесь задавать их.