什么是 12.04.2 LTS 3.5.0 中的 linux-kernel-devel 等价物?

pas*_*wan 14 installation package-management kernel

为菜鸟问题道歉,但是当我尝试

sudo apt-get install Linux-kernel-devel 
Run Code Online (Sandbox Code Playgroud)

我得到以下信息:

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  
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

sudo apt-get install linux-headers-$(uname -r)  
sudo apt-get install build-essentials  
sudo apt-get install Linux-headers-generic 
Run Code Online (Sandbox Code Playgroud)

没有快乐......有什么建议吗?

Eli*_*gan 18

执行摘要

您可能想要安装名为linux-headers-generic.

如果 runninguname -r给您的不是generic版本号之后的内容,请将其替换为genericin linux-headers-generic。(这可能是servergeneric-pae在某些 Ubuntu 版本的某些安装上,还有其他一些偶尔的内核“风格”。)

由于您很可能需要它,以便您可以构建一个驱动程序(它可能是自动化的,您可能不是“自己构建”),因此最好也安装build-essential它来制作它,这样您可能会拥有所有必要的工具.

完整说明

据我所知,没有操作系统有名为Linux-kernel-devel. 这是出于两个原因:

  • 对于任何类 Unix 操作系统,以大写字母开头的包名极为罕见。
  • GNU/Linux 操作系统通常命名其与内核相关的软件包,以便名称包含单词kernel或单词linux,但不能同时包含两者。(在 Ubuntu 上,它是linux一词。)

使用 Red Hat Package Manager ( rpm) 和相关实用程序的系统上的内核相关软件包通常包含kernel在其软件包名称中。例如,Mageia 有许多名称kerneldevel. 这些包几乎总是(在 Mageia 和任何拥有它们的操作系统上)提供从源代码构建驱动程序所需的头文件,以便与内核一起使用。他们还可以提供相关的实用程序来提供便利。这些包:

  • 千万不能提供内核的完整的源代码。这是由其他软件包提供的。
  • 不要提供预编译的,可用的内核。这是由其他软件包提供的。
  • 千万不能提供编译器或其他大多数目的构建工具。这些也是由其他软件包提供的。

在 Ubuntu 中,从这里的列表中可以看出,提供内核头文件的软件包的名称以linux-headers. 通常要安装的正确软件包是linux-headers-generic. 但是,要确定要安装什么包以获取与当前运行的内核相对应的头文件,请运行:

uname -r
Run Code Online (Sandbox Code Playgroud)

您将获得类似于以下内容的输出:

3.5.0-36-generic
Run Code Online (Sandbox Code Playgroud)

也就是说,您将有一个版本号(其中包括.字符,通常至少有一个-),后跟一个-,后跟一个或多个指示您正在运行的内核类型的单词。

如果您想要您现在正在运行的特定版本的标头,您可以安装名称为linux-headers-*where的包,该包的名称*uname -r. 例如,在我的系统上,我可以运行:

sudo apt-get update && sudo apt-get install linux-headers-3.5.0-36-generic
Run Code Online (Sandbox Code Playgroud)

我什至可以自动化它:

sudo apt-get update && sudo apt-get install linux-headers-`uname -r`
Run Code Online (Sandbox Code Playgroud)

这些方法是等效的,但它们通常不是最好的方法。

相反,您通常希望安装始终提供最新内核头文件作为更新的元包(永久取决于最新的头文件包)。这与编译、运行内核的安装和更新方式相似。为此,只需查看版本号后面uname -r's 输出部分。也就是说,如果给了你,就拿一部分。uname -r3.5.0-36-genericgeneric

然后安装名为linux-headers-*where的包*被该部分替换。所以,在我的系统上,linux-headers-generic我可以安装它的一种方法是运行:

sudo apt-get update && sudo apt-get install linux-headers-generic
Run Code Online (Sandbox Code Playgroud)

对于大多数人来说是linux-headers-generic,但是这取决于Ubuntu的发布你正在运行,什么结构和类型的设备你运行它,以及它是如何安装和配置,其他可能性包括generic-paehighbankomapserver,和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
Run Code Online (Sandbox Code Playgroud)

这将安装您想要的内核版本。您可以在此站点分析内核主线版本和长期版本