що таке еквівалент linux-kernel-devel в 12.04.2 LTS 3.5.0?


14

вибачте за питання про noob, але коли я намагаюся

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 

без радості ... якісь пропозиції?


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 зазвичай називають свої пакети, пов’язані з ядром, так що імена містять слово ядро або слово 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

Це дозволить встановити потрібну версію ядра. Ви можете проаналізувати версії магістралі ядра і версію довгостроковій в цьому сайті


0

Вам доведеться скласти карту, який конкретний деб вам потрібен, але є дебіли, які знадобляться у складі ядра 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

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


0

linux-kernel-devel - це назва пакету SUSE / Redhat, що надає такі речі, як генксіми.

Дуже швидко Google пропонує, що linux-headers-generic надає генксими на Debian / Ubuntu.

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