jaki jest odpowiednik linux-kernel-devel w 12.04.2 LTS 3.5.0?


14

przepraszam za pytanie nooba, ale kiedy próbuję

sudo apt-get install Linux-kernel-devel 

Dostaję następujące:

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  

Próbowałem następujące:

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

bez radości ... jakieś sugestie?


2
Czego oczekujesz od pakietu linux-kernel-devel? Szukasz nagłówków lub czegoś innego?
Robie Basak

Odpowiedzi:


15

Streszczenie

Prawdopodobnie chcesz zainstalować pakiet o nazwie linux-headers-generic.

Jeśli uruchomienie uname -rdaje coś innego niż genericpo numerze wersji, zamień to na genericin linux-headers-generic. (Może to być serverlub generic-paew niektórych instalacjach niektórych wydań Ubuntu, a od czasu do czasu istnieje kilka innych „smaków” jądra).

Ponieważ najprawdopodobniej potrzebujesz tego, aby zbudować sterownik (który może być zautomatyzowany, być może nie „budujesz go sam”), dobrym pomysłem jest build-essentialrównież zainstalowanie go, aby mieć zapewnione wszystkie niezbędne narzędzia .

Pełne wyjaśnienie

Według mojej najlepszej wiedzy żaden system operacyjny nie ma pakietu o nazwie Linux-kernel-devel. Wynika to z dwóch powodów:

  • Nazwy pakietów zaczynające się od wielkich liter są niezwykle rzadkie, dla każdego systemu operacyjnego typu uniksowego.
  • Systemy operacyjne GNU / Linux zwykle nazywają swoje pakiety związane z jądrem, tak aby nazwy zawierały słowo jądro lub słowo linux , ale nie oba. (W Ubuntu jest to słowo linux .)

Powszechnie jest, że pakiety związane z jądrem w systemach, które używają Red Hat Package Manager ( rpm) i powiązanych narzędzi, które mają kernelw nazwie swoich pakietów. Na przykład Mageia ma wiele pakietów, których nazwy zaczynają się kerneli kończą devel. Te pakiety prawie zawsze (na Magei i dowolnym systemie operacyjnym, który je posiada) zawierają pliki nagłówkowe potrzebne do zbudowania sterowników ze źródła do użytku z jądrem. Mogą również zapewniać powiązane narzędzia ułatwiające. Te pakiety:

  • czy nie podać pełny kod źródłowy jądra. Zapewniają to inne pakiety.
  • czy nie zapewnić skompilowane jądro, użytkową. Zapewniają to inne pakiety.
  • czy nie zapewnić kompilator lub większość innych narzędzi Celem budowy. Te również są dostarczane przez inne pakiety.

W Ubuntu, jak widać na liście tutaj , pakiety zawierające nagłówki jądra mają nazwy zaczynające się od linux-headers. Zwykle jest to właściwy pakiet do zainstalowania linux-headers-generic. Jednak, aby upewnić się, jaki pakiet zainstalować, aby uzyskać nagłówki odpowiadające aktualnie działającemu jądru, uruchom:

uname -r

Otrzymasz wyjście, które wygląda mniej więcej tak:

3.5.0-36-generic

Oznacza to, że będziesz mieć numer wersji (który będzie zawierał .znaki i zwykle co najmniej jeden -), po którym następuje a -, po którym następuje jedno lub więcej słów wskazujących, jakiego rodzaju jądro używasz.

Jeśli tylko chcesz nagłówki dla wersji konkretnego zdarzy ci się być teraz uruchomione, można zainstalować pakiet, którego nazwa jest linux-headers-*gdzie *otrzymuje pełnej mocy uname -r. Na przykład w moim systemie mógłbym uruchomić:

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

Mógłbym to nawet zautomatyzować:

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

Podejścia te są równoważne, ale zazwyczaj nie są najlepszym rozwiązaniem.

Zamiast tego zwykle będziesz chciał zainstalować metapakiet, który zawsze udostępnia najnowsze nagłówki jądra jako aktualizację (nieustannie zależnie od tego, który pakiet nagłówków jest najnowszy). Jest to analogiczne do sposobu, w jaki skompilowane, działające jądro jest instalowane i aktualizowane. Aby to zrobić, spójrz tylko na część uname -rwyniku po numerze wersji. To znaczy, jeśli uname -rdaje 3.5.0-36-generic, weź tylko genericczęść.

Następnie zainstaluj pakiet o nazwie linux-headers-*gdzie *jest zastąpiony przez tę część. Tak więc w moim systemie byłoby to linux-headers-generici jednym ze sposobów, w jaki mógłbym zainstalować, byłoby uruchomienie:

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

Dla większości ludzi jest to linux-headers-generic, ale w zależności od tego, co Ubuntu zwolnić używasz, co architektura i typ urządzenia używasz go, i jak jest zainstalowany i skonfigurowany, inne możliwości obejmują generic-pae, highbank, omap, server, i virtual.

Powiązane pakiety

Pliki nagłówkowe ułatwiają tworzenie i kompilowanie / tworzenie oprogramowania, które korzysta z udogodnień udostępnianych przez oprogramowanie, którego pliki nagłówkowe są używane. Najczęstszym powodem, dla którego możesz potrzebować nagłówków jądra, jest zbudowanie sterownika (modułu jądra) z kodu źródłowego. Niektóre aplikacje, takie jak VMware i VirtualBox, czasami będą tego wymagać i same zautomatyzują kompilację.

Oprócz plików nagłówkowych do zbudowania oprogramowania potrzebny jest kompilator i inne narzędzia. Aby zmaksymalizować prawdopodobieństwo posiadania niezbędnych narzędzi, dobrym pomysłem jest również zainstalowanie build-essentialpakietu.

Nieczęsto potrzebny jest pełny kod źródłowy jądra (chyba że planujesz zbudować jądro ze źródła). Ale jeśli tego potrzebujesz, musisz zainstalować również inny pakiet. W Ubuntu nazywa się pakiet pełnego kodu źródłowego jądra linux-source. (Jest to zgodne z konwencją nazywania pakietów Debian / Ubuntu linuxzamiast dostarczania istotnych części jądra Linuksa kernel.)

Jeśli nadal masz problemy

Jeśli spróbujesz zainstalować którykolwiek z tych pakietów, ale napotkasz problemy i potrzebujesz pomocy, będziesz musiał dołączyć pełny i dokładny tekst z terminala, w tym wiersze, w których wpisałeś polecenia. Najlepszym sposobem na to jest, edytując swoje pytanie, ale jeśli jest zbyt długie, możesz je wkleić gdzieś na przykład http://paste.ubuntu.com i podać nam adres URL, pod którym możemy uzyskać do niego dostęp.

Jeśli skomentujesz to pytanie, otrzymam powiadomienie. Możesz edytować swoje pytanie, a także komentować tutaj, aby zwrócić uwagę na informacje podane w pytaniu. (Ważne informacje najlepiej przechowywać w pytaniach i odpowiedziach.) Powodzenia!


0

Jak powiedział raport (E: Nie można znaleźć pakietu linux-kernel-devel) Nie ma takich pakietów. Możesz zainstalować każdą wersję jądra, pobierając pakiety jądra debiana stąd

Na przykład; chcemy zainstalować jądro 3.9.8 (architektura i386); Pobierz wszystkie ** pakiety i386.deb, a także * * * pakiet all.deb do folderu. Wejdź do folderu z poleceniem cd w terminalu;

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

Spowoduje to zainstalowanie żądanej wersji jądra. Można analizować wersje Mainline jądra i wersje długoterminowe w tym miejscu


0

Będziesz musiał sam zaplanować, jakich konkretnych debów potrzebujesz, ale są takie debaty, których będziesz potrzebować w kompilacjach jądra Ubunut .

Szczerze, najpierw sprawdzę, sudo apt-get updatea potem sudo apt-get dist-upgradeupewnię się, że używasz najnowszego jądra i nie będę musiał tego robić wkrótce.

Następnie przejrzyj listę kompilacji jądra dla twojej wersji, która pasuje do twojej uname -r. Musisz zajrzeć do każdego kompilacji build.log, aby dowiedzieć się, na którą wersję główną mapują tę kompilację. Mam 3.5.0-34 # 55 wymienione jako moje jądro, ale tak naprawdę jest to zgodne z wersją 3.5.7.14-kwantową . Zainstaluj wszystkie debaty odpowiadające tej wersji, aby uzyskać nagłówki itp. I upewnij się, że masz narzędzia do kompilacjisudo apt-get install build-essential

Twój przebieg może jednak bardzo zależeć od tego, co planujesz zrobić z plikami devel.


0

linux-kernel-devel to nazwa pakietu SUSE / Redhat zapewniającego takie rzeczy jak genksyms.

Bardzo szybkie Google sugeruje, że linux-headers-generic zapewnia genksyms na Debian / Ubuntu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.