`错误! 无法找到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驱动程序都在内核升级上得到更新。

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

 sudo dpkg-reconfigure fglrx 

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

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

 dkms status ls -R /var/lib/dkms 

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

 ls -l /var/lib/dkms 

在我的情况下,我有一个旧版本的fglrx安装,我曾用于一年前诊断一些问题,只是重新命名。 删除这个旧的问题使问题消失了。

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

这通常是由/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驱动程序。 最近,我开始研究这个问题。 实际上,我的问题是在/var/lib/dkms/nvidia下有多个具有相同前缀nvidia-/usr/src/下的模块文件夹和多个具有不同版本号的文件夹。 删除旧版本后,都执行以下命令

  dkms status dkms autoinstall 

工作。

我曾经在使用Nvidia驱动程序的Red Hat 7.5工作站上遇到过这种情况。 我知道这不是Ubuntu,但这可能对某人有帮助……

从dkms中删除Nvidia文件,然后重新安装dkms:

 rm -rf /var/lib/dkms/nvidia yum reinstall dkms 

然后重新安装Nvidia驱动程序

 ./NVIDIA-installer.bin --dkms reboot 

警告,这对我有用,但可能不是正确的做事方式。