`Ошибка! Не удалось найти файл dkms.conf`

42

Во время недавнего apt-get dist-upgrade12.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что просто использует настройки по умолчанию.
MiJyn

Ответы:

28

Я получал это на обновлениях ядра некоторое время, в результате чего не все мои dkmsдрайверы обновляются при обновлениях ядра.

Во-первых, я смог обойти эту проблему, переконфигурировав любые пакеты, которые dkmsзаставляли их перекомпилироваться для текущего ядра - например, это были мои драйверы видео AMD, которые потерпели неудачу (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установки, которую я использовал для диагностики некоторых проблем год назад, и я просто переименовал ее. Удаление этого старого хлама заставило проблему уйти.

Если есть нежелательная почта, удалите ее (или переместите из этого каталога) - если там установлен пакет, установленный вручную, рассмотрите возможность его обновления или удаления и использования поддерживаемой версии.

Greg
источник
Спасибо за это, у меня была проблема с nvidia-340водителем ...
ionreflex
1
У меня была такая же проблема сanbox
Аарон Кофилд
29

Это обычно вызывается модулями /var/lib/dkms, у которых нет dkms.confфайла в их исходных подкаталогах - dkmsожидает этот файл, поэтому сообщит об ошибке, если он отсутствует, а затем может пропустить компиляцию некоторых допустимых модулей.

Чтобы найти нарушающий модуль, запустите этот короткий скрипт (спасибо Лекенштейну ):

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

Это выведет любые каталоги модулей dkms; Затем вы можете решить, удалять ли пакет, который их создал, или они были установлены или переименованы вручную, перемещать их в другое место или удалять.

Дэвид Фрейзер
источник
3
Отлично. Другие ответы могут относиться к конкретным случаям, но это очень быстро продемонстрировало, где была проблема (и это действительно было проблемой, так как определенное программное обеспечение копировало старые установки в каталог /var/lib/dkms/*.old).
Auspex
Если nvidia является нарушителем, например, /var/lib/dkms/nvidia/396.24/sourceявляется выходом, проверьте, есть ли уже более новые версии, /var/lib/dkms/nvidiaи удалите нарушающую версию .
Флатрон
Благодарность! В моем случае нарушителем были open-vm-toolsпакеты, и после очистки мне пришлось не забывать запускать apt auto-remove, так как проблема была в зависимости.
эллиптический вид
14

У меня была эта проблема с VirtualBox от Oracle ppa, а не с 12.04 LTS:

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

Я скопировал содержимое / var / lib / dkms в другой каталог в качестве резервной копии, затем удалил каталог vboxhost в / var / lib / dkms;

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

Затем я перенастроил пакет virtualbox следующим образом:

sudo dpkg-reconfigure virtualbox-4.2

и это удалось сделать это:

   * Trying to register the VirtualBox kernel modules using DKMS
Ян Ор
источник
1
Просто sudo dpkg-reconfigure virtualbox-4.2сделал работу. Спасибо
Сергей
11

Я тоже очень долго страдал от этой проблемы. Мне нужно переустанавливать драйвер NVIDIA каждый раз после обновления ядра и перезапуска. Недавно я начал изучать эту проблему. На самом деле, моя проблема заключается в том , что существует несколько модулей папки с одинаковым префиксом nvidia-при /usr/src/и несколько папок с различными номерами версий под /var/lib/dkms/nvidia. После удаления старых версий обе следующие команды

    dkms status
    dkms autoinstall

работал.

древность
источник
Это работает для меня, но я должен был сделать apt-get install --reinstall dkmsи dkms autoinstallпосле использования вашего метода ... а затем установить драйверы NVIDIA ...
Milor123
помогло только это решение - убедитесь, что он работает с sudo
Арье Бейтц
0

Это случилось со мной однажды на рабочей станции Red Hat 7.5 с драйвером Nvidia. Я знаю, что это не Ubuntu, но это может кому-то помочь ...

Удалите файлы Nvidia из dkms, а затем переустановите dkms:

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

Затем переустановите драйвер Nvidia

./NVIDIA-installer.bin --dkms
reboot

ВНИМАНИЕ, это сработало для меня, но, возможно, не является правильным способом ведения дел.

Джейк
источник
И это сработало у вас на RedHat, а не на Ubuntu !!!
Сорен