当前位置: 首页>>技术教程>>正文


`错误!无法找到dkms.conf文件`

,

问题描述

在最近的apt-get dist-upgrade 12.10期间,我收到以下错误:

Setting up linux-headers-3.5.0-19-generic (3.5.0-19.30) ...
Examining /etc/kernel/header_postinst.d.
run-parts: executing /etc/kernel/header_postinst.d/dkms 3.5.0-19-generic /boot/vmlinuz-3.5.0-19-generic
Error! Could not locate dkms.conf file.
File:  does not exist.

有任何想法吗?

最佳解决思路

我已经在内核升级上获得了一段时间,结果并非所有的dkms驱动程序都在kernel-upgrades上得到更新。

首先,通过重新配置使用dkms的任何软件包强制它们为当前内核重新编译,我能够解决这个问题 – 例如,我的AMD视频驱动程序失败了(package == fglrx):

sudo dpkg-reconfigure fglrx

这至少会为当前版本配置驱动程序。

最后我发现了这个bug,其中包括一些可用于诊断的步骤:https://bugs.launchpad.net/ubuntu/+source/dkms/+bug/830915

dkms status
ls -R /var/lib/dkms

基本上他们正在做的是寻找令人惊讶或意外的任何事情 – 例如你已经卸载的软件包 – 或者你在早期的ubuntu版本上手动安装的软件,并且可能无法使用较新的版本。特别检查目录上的date-stamp,这些目录可能会显示特别旧的包可能来自手动安装的包。

ls -l /var/lib/dkms

在我的情况下,我有一个旧版本的fglrx安装,我曾用于一年前诊断一些问题,只有re-named它。删除这个旧的问题使问题消失了。

如果有垃圾删除它(或将其移出该目录) – 如果有一个手动安装的包,请考虑更新它,或卸载它并使用维护版本。

次佳解决思路

这通常是由/var/lib/dkms中的模块在其源子目录中没有dkms.conf文件引起的 – dkms需要此文件,因此如果缺少则会报告错误,然后可能会错过编译某些有效模块。

要查找有问题的模块,请运行此简短脚本(感谢Lekensteyn):

for i in /var/lib/dkms/*/[^k]*/source; do [ -e "$i" ] || echo "$i";done

这将输出任何dkms模块目录;然后,您可以决定是否卸载创建它们的程序包,或者是否已手动安装或重命名,以将它们移动到其他位置或将其删除。

第三种解决思路

我从Oracle的ppa中遇到了VirtualBox这个问题,而不是用12.04 LTS打包的那个:

Error! Could not locate dkms.conf file.
File:  does not exist.

我将/var /lib /dkms的内容复制到另一个目录作为备份,然后删除/var /lib /dkms中的vboxhost目录;

mkdir ~/backup_dkms
cp -r /var/lib/dkms/* ~/backup_dkms 
rm -rf /var/lib/dkms/vboxhost

然后我重新配置了虚拟机包,如下所示:

sudo dpkg-reconfigure virtualbox-4.2

它成功地做到了这一点:

   * Trying to register the VirtualBox kernel modules using DKMS

第四种思路

我很长一段时间也遇到了这个问题。我需要在内核更新和重启后每次重新安装NVIDIA驱动程序。最近,我开始研究这个问题。实际上,我的问题是在/usr/src/下有多个模块文件夹具有相同的前缀nvidia-,在/var/lib/dkms/nvidia下有多个具有不同版本号的文件夹。删除旧版本后,都执行以下命令

    dkms status
    dkms autoinstall

工作。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2554.html,未经允许,请勿转载。