что такое эквивалент linux-kernel-devel в 12.04.2 LTS 3.5.0?

14

извиняюсь за вопрос нуба, но когда я пытаюсь

sudo apt-get install Linux-kernel-devel 

Я получаю следующее:

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  

Я пробовал следующее:

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

без радости ... есть предложения?

paschwan
источник
2
Что вы ожидаете от пакета linux-kernel-devel? Вы ищете заголовки или что-то еще?
Роби Басак

Ответы:

15

Управляющее резюме

Вы, вероятно, хотите установить пакет под названием linux-headers-generic.

Если ход uname -rдает вам что - то другое , чем genericпосле того , как номер версии, заменить , что для genericв linux-headers-generic. (Это может быть serverили generic-paeв некоторых установках некоторых выпусков Ubuntu, и есть несколько других случайных «ядер».)

Поскольку вам, скорее всего, это нужно для того, чтобы вы могли создать драйвер (который может быть автоматизирован, вам не нужно «собирать его самостоятельно»), рекомендуется также установить build-essentialего, чтобы у вас были все необходимые инструменты. ,

Полное объяснение

Насколько мне известно, ни у одной операционной системы нет пакета под названием Linux-kernel-devel. Это по двум причинам:

  • Имена пакетов, начинающиеся с заглавных букв, встречаются крайне редко для любой Unix-подобной ОС.
  • Операционные системы GNU / Linux обычно называют свои связанные с ядром пакеты так, чтобы имена содержали слово kernel или слово linux , но не оба. (В Ubuntu это слово linux .)

Связанные с ядром пакеты в системах, использующих Red Hat Package Manager ( rpm) и связанные утилиты , часто встречаются kernelв названии своих пакетов. Например, у Mageia есть несколько пакетов , имена которых начинаются с kernelи заканчиваются на devel. Эти пакеты почти всегда (в Mageia и любой операционной системе, в которой они есть) предоставляют файлы заголовков, необходимые для сборки драйверов из исходного кода для использования с ядром. Они также могут предоставить соответствующие утилиты для облегчения. Эти пакеты:

  • ничего не предоставляют полный исходный код ядра. Это предусмотрено другими пакетами.
  • ничего не обеспечивает предварительно скомпилированные, годное к употреблению ядра. Это предусмотрено другими пакетами.
  • ничего не обеспечивает компилятор или большинство других инструментов цели сборки. Они также предоставляются другими пакетами.

В Ubuntu, как видно из приведенного здесь списка , пакеты с заголовками ядра имеют имена, начинающиеся с linux-headers. Обычно правильный пакет для установки linux-headers-generic. Однако, чтобы быть уверенным в том, какой пакет установить для получения заголовков, соответствующих вашему текущему ядру, выполните:

uname -r

Вы получите вывод, который выглядит примерно так:

3.5.0-36-generic

Таким образом, у вас будет номер версии (который будет включать .символы и, как правило, по крайней мере, один -), за которым следует буква a -, за которой следуют одно или несколько слов, указывающих, какое ядро ​​вы используете.

Если вы просто хотите , чтобы заголовки для конкретной версии вам случится быть запущен в настоящее время, вы можете установить пакет, имя которого , linux-headers-*где *заменяется полным выходомuname -r . Например, в моей системе я мог запустить:

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

Я мог бы даже автоматизировать это:

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

Эти подходы эквивалентны, но, как правило, не лучший путь.

Вместо этого вы обычно захотите установить метапакет, который всегда предоставляет новейшие заголовки ядра в качестве обновления (постоянно в зависимости от того, какой пакет заголовков является самым новым). Это аналогично тому, как ваше скомпилированное работающее ядро ​​устанавливается и обновляется. Для этого посмотрите только часть uname -rвывода после номера версии. То есть, если uname -rдает вам 3.5.0-36-generic, возьмите толькоgeneric участие.

Затем установите пакет с именем , linux-headers-*где *заменяются той частью. Таким образом, в моей системе это было бы так, linux-headers-genericи один из способов, которым я мог бы установить это, было бы запустить:

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

Для большинства людей это linux-headers-generic, но в зависимости от того, что Ubuntu релиза вы работаете, какая архитектура и типа устройства вы используете его, и как он установлен и настроен, другие возможности включают в себя generic-pae, highbank, omap, server, и virtual.

Связанные пакеты

Заголовочные файлы облегчают разработку и компиляцию / сборку программного обеспечения, которое использует средства, предоставляемые программным обеспечением, чьи заголовочные файлы используются. Наиболее распространенная причина, по которой вам могут понадобиться заголовки ядра, - это то, что вы собираетесь собрать драйвер (модуль ядра) из исходного кода. Некоторым приложениям, таким как VMware и VirtualBox, иногда требуется это, и они сами автоматизируют сборку.

Помимо заголовочных файлов, для сборки программного обеспечения необходим компилятор и другие инструменты. Чтобы максимизировать вероятность того, что у вас есть необходимые инструменты, рекомендуется установитьbuild-essential пакет.

Никому не нужен настоящий полный исходный код ядра (если, конечно, вы не планируете собирать ядро ​​из исходного кода). Но если вам это нужно, вам придется установить и другой пакет. В Ubuntu пакет для полного исходного кода ядра называется linux-source. (Это соответствует соглашению Debian / Ubuntu о присвоении имен пакетам, которые предоставляют существенные части ядра Linux, linuxа не kernel.)

Если у вас все еще есть проблемы

Если вы попытаетесь установить какой-либо из этих пакетов, но у вас возникнут проблемы, и вам понадобится помощь, вам придется включить полный и точный текст из Терминала, включая строки, в которых вы вводили команды. Лучший способ обеспечить это - отредактировать ваш вопрос, но если он слишком длинный, вы можете вставить его где-нибудь, например, http://paste.ubuntu.com и предоставить нам URL-адрес, по которому мы сможем получить к нему доступ.

Если вы прокомментируете этот вопрос, я буду уведомлен. Вы можете отредактировать свой вопрос, а также прокомментировать здесь, чтобы привлечь внимание к информации, которую вы указали в своем вопросе. (Важную информацию лучше хранить в вопросах и ответах.) Удачи!

Элия ​​Каган
источник
0

Как говорится в отчете (E: Невозможно найти пакет linux-kernel-devel) Подобных пакетов не существует. Вы можете установить любую нужную версию ядра, загрузив пакеты ядра Debian отсюда

Например; мы хотим установить ядро ​​3.9.8 (архитектура i386); Загрузите все ** пакеты i386.deb, а также пакет * * * all.deb в папку. Войдите в папку с помощью команды cd в терминале;

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

Это установит желаемую версию ядра. Вы можете проанализировать версии основной и долгосрочной версий ядра на этом сайте.

ubuntu_tr
источник
0

Вы должны будете сами определить, какой конкретный deb вам нужен, но в сборках ядра Ubunut вам понадобятся дабы .

Честно говоря, я сначала сверился с этим, sudo apt-get updateа затем sudo apt-get dist-upgradeудостоверился, что у вас запущено последнее ядро, и в скором времени мне не нужно будет делать это снова.

Затем просмотрите список сборки ядра для вашей версии, которая соответствует вашей uname -r. Вам нужно посмотреть в каждой сборке build.log, чтобы узнать, какую версию заголовка они сопоставляют с этой сборкой. У меня 3.5.0-34 # 55 в списке моего ядра, но это действительно соответствует 3.5.7.14-квантуля . Установите все библиотеки, соответствующие этой версии, чтобы получить ваши заголовки и тому подобное, и убедитесь, что у вас есть инструменты сборки сsudo apt-get install build-essential

Ваш пробег может сильно зависеть от того, что вы планируете делать с файлами devel.

Kallor
источник
0

linux-kernel-devel - это имя пакета SUSE / Redhat, предоставляющего такие вещи, как genksyms.

Очень быстрый Google предполагает, что linux-headers-generic предоставляет genksyms в Debian / Ubuntu.

Тим Баверсток
источник