`错误! 无法找到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
警告,这对我有用,但可能不是正确的做事方式。