当我收到“没有安装候选项”错误时,如何安装 Linux 标头

当我收到“没有安装候选项”错误时,如何安装 Linux 标头

主要问题

我无法运行任何虚拟化软件。即 Vmware 或 Virtualbox。因为它们都要求我安装(或产生一些导致的错误)安装 build essentials 和最新的 linux 头文件。

所以我的问题始于以下问题

当我尝试使用更新时

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

我得到的是

正在读取软件包列表... 完成 正在构建依赖关系树
正在读取状态信息... 完成 软件包 linux-headers-3.13.0-45-generic 不可用,但被另一个软件包引用。这可能意味着该软件包缺失、已过时或只能从其他来源获得

E:软件包‘linux-headers-3.13.0-45-generic’没有安装候选项

标头不匹配

当我尝试通过运行来确定我拥有什么时

apt-cache search linux-headers-

我明白了

可用的标题

我尝试了 Google 上能找到的大部分方法,但都没有什么帮助。因此希望在这里找到一些解决方案。

答案1

13.13 似乎是 trusty 的旧内核?而 3.16 是 utopic 附带的内核。

如果您do-release-upgrade最近运行并且仍然使用旧内核,请注意所有旧存储库(旧内核头所在的位置)都已被禁用/清除/etc/apt

通常,版本升级会使内核小版本至少增加 2 个版本(从 3.13 到 3.16,以及从​​ vivi 到 3.18)。

此时您有两个选择。要么使用新内核,安装其标头,然后重建缺失的驱动程序,要么从旧 ubuntu 发行版将存储库列表重新添加到 apt,然后安装缺失的标头。

答案2

我遇到了类似的问题 - 无法运行 virtualbox VM,并且我安装的内核版本似乎比我安装的内核头文件旧。(但与问题中的精确版本号不同。)(我从 Ubuntu 14.04 升级到 14.10 再升级到 15.04 后进入这种状态)

我发现在启动时的 GRUB 菜单中,在“Ubuntu 的附加选项”下,我可以选择与我安装的标头匹配的较新的内核。

选择该菜单项,然后启动,让我能够按照 virtualbox 记录的流程重新编译 virtualbox 内核模块,然后启动我的 virtualbox VM。

接下来我调整了我的 GRUB 设置以使该内核选择成为默认选择,如下所述:http://statusq.org/archives/2012/10/24/4584/

答案3

尝试使用sudo apt --fix-broken install

答案4

我使用以前的内核解决了这个问题!

user283885 正在提供很好的解决方案。

我尝试了其他(以前的)内核。您可以尝试更新或以前的内核(从 apt-cache 列表 3.16* 中可用的内核中)。

这是我做的测试:

我的实际内核:3.13.0-45-generic uname -a Linux pc-01 3.13.0-45-generic #74~precise1-Ubuntu SMP Thu Jan 15 20:21:55 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

重新启动并选择 3.13.0-44-generic(之前安装的内核)

然后我安装 linux-headers-3.13.0-44-generic、virtualbox-4.3 和 DKMS

之后我运行命令来启用驱动程序 /etc/init.d/vboxdrv 设置

对我来说一切都很好!(谢谢 David Foerster。我现在试着让我的帖子更容易理解)。

相关内容