12.04.2 LTS 3.5.0 中的 linux-kernel-devel 等效项是什么?

12.04.2 LTS 3.5.0 中的 linux-kernel-devel 等效项是什么?

抱歉问了个菜鸟问题,但是当我尝试

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 

没有喜悦...有什么建议吗?

答案1

执行摘要

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

如果运行时uname -r显示的不是generic版本号,请将其替换为genericlinux-headers-generic(这可能是servergeneric-pae在某些 Ubuntu 版本的某些安装中,并且还有其他一些偶尔出现的内核“风格”。)

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

完整解释

据我所知,没有操作系统有一个名为的软件包Linux-kernel-devel。这有两个原因:

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

rpm在使用 Red Hat 软件包管理器 ( ) 和相关实用程序的系统上,内核相关软件包kernel的名称中通常包含 。例如,Mageia 有一些包裹其名称以 开头kernel并以 结尾devel。这些软件包几乎总是(在 Mageia 和任何具有它们的操作系统上)提供头文件需要从源代码构建驱动程序以供内核使用。它们还可能提供相关实用程序以方便使用。这些软件包:

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

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

uname -r

您将获得类似如下的输出:

3.5.0-36-generic

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

如果你只是想要你现在正在运行的特定版本的头文件,你可以安装名称为 的包,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、、、和。highbankomapservervirtual

相关软件包

头文件便于开发和编译/构建使用所用头文件软件所提供的功能的软件。您可能需要内核头文件的最常见原因是您要从源代码构建驱动程序(内核模块)。某些应用程序(如 VMware 和 VirtualBox)有时会需要此文件,并会自动完成构建。

除了头文件之外,构建软件还需要编译器和其他工具。为了最大限度地利用必要的工具,最好build-essential也安装软件包。

很少有人需要实际的完整内核源代码(当然,除非您打算从源代码构建内核)。但是,如果您确实需要它,您还必须安装另一个软件包。在 Ubuntu 中,完整内核源代码的软件包称为linux-source。(这符合 Debian/Ubuntu 的命名惯例,即为提供 Linux 内核实质性部分的软件包命名,linux而不是kernel。)

如果你仍然有问题

如果您尝试安装任何这些软件包但遇到问题,并且需要帮助,那么您必须包含来自终端的完整和准确的文本,包括您输入命令的行。提供此信息的最佳方式是编辑您的问题,但如果问题太长,您可以将其粘贴到类似http://paste.ubuntu.com并向我们​​提供可访问它的 URL。

如果您对此问题发表评论,我会收到通知。您可以编辑您的问题,也可以在此处发表评论,以引起人们对您在问题中提供的信息的注意。(重要信息最好保留在问题和答案中。)祝您好运!

答案2

正如报告所述(E:无法找到软件包 linux-kernel-devel),没有这样的软件包。您可以通过从下载 debian 内核软件包来安装所需的每个内核版本这里

例如,我们要安装内核 3.9.8(i386 架构);全部下载**i386.deb 软件包以及 ***all.deb 包放到一个文件夹中。在终端中使用 cd 命令进入该文件夹;

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

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

答案3

你必须自己规划出你需要哪些特定的 deb,但你需要的 deb 如下:Ubunut 的内核构建

老实说,我会先检查sudo apt-get update,然后sudo apt-get dist-upgrade确保您运行的是最新的内核,并且不需要很快再次执行此操作。

接下来查看与您的版本匹配的内核构建列表uname -r。您需要查看每个构建的 build.log 以找出它们将该构建映射到哪个主版本。我的内核中列出了 3.5.0-34#55,但这实际上映射到构建3.5.7.14-量子。安装与该版本相对应的所有 deb 以获取标题等,并确保你已经获得了构建工具sudo apt-get install build-essential

但是,您的里程可能会有很大差异,这取决于您计划用 devel 文件做什么。

答案4

linux-kernel-devel 是提供类似 genksyms 功能的 SUSE/Redhat 软件包的名称。

快速的 Google 搜索表明 linux-headers-generic 在 Debian/Ubuntu 上提供了 genksyms。

相关内容