Lors d'un récent apt-get dist-upgrade
of 12.10, j'ai reçu l'erreur suivante:
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.
Des idées?
Cela fait un moment que je reçois cette information sur les mises à niveau du noyau, de sorte que tous mes pilotes dkms
ne sont pas mis à jour lors des mises à niveau du noyau.
Tout d’abord, j’ai pu résoudre le problème en reconfigurant les packages qui utilisaient dkms
pour les forcer à être recompilés pour le noyau actuel. Par exemple, c’est mon pilote vidéo AMD qui a échoué (package == fglrx
variable__):
Sudo dpkg-reconfigure fglrx
Cela permettrait au moins de configurer les pilotes pour la version actuelle.
Enfin, j'ai trouvé ce bogue, qui comprend certaines étapes que vous pouvez utiliser pour diagnostiquer: https://bugs.launchpad.net/ubuntu/+source/dkms/+bug/830915
dkms status
ls -R /var/lib/dkms
Essentiellement, ils recherchent tout ce qui est surprenant ou inattendu - par exemple, les packages que vous avez désinstallés - ou les logiciels que vous avez installés manuellement sur une version antérieure d'ubuntu et qui risquent de ne pas fonctionner avec la version la plus récente. Vérifiez en particulier l’horodatage des répertoires qui peut indiquer que des paquets particulièrement anciens peuvent provenir de paquets installés manuellement.
ls -l /var/lib/dkms
Dans mon cas, j'avais une ancienne version de l'installation fglrx
que j'avais utilisée pour diagnostiquer certains problèmes il y a un an et je l'avais simplement renommée. La suppression de ce vieil état a fait disparaître le problème.
S'il y a de la malbouffe, supprimez-la (ou déplacez-la hors de ce répertoire) - si un paquet est installé manuellement, envisagez de le mettre à jour ou de le désinstaller et d'utiliser la version conservée.
Cela est généralement dû au fait que les modules de /var/lib/dkms
ne possèdent pas de fichier dkms.conf
dans leurs sous-répertoires sources - dkms
attend ce fichier. Il signalera donc une erreur s'il est manquant et risque de manquer la compilation de certains modules valides.
Pour trouver le module incriminé, exécutez ce court script (grâce à Lekensteyn ):
for i in /var/lib/dkms/*/[^k]*/source; do [ -e "$i" ] || echo "$i";done
Cela produira tous les répertoires du module dkms; vous pouvez ensuite décider de désinstaller le package qui les a créés ou, s'ils ont été installés ou renommés manuellement, de les déplacer ailleurs ou de les supprimer.
J'ai eu ce problème avec VirtualBox de ppa d'Oracle, plutôt que celui fourni avec 12.04 LTS:
Error! Could not locate dkms.conf file.
File: does not exist.
J'ai copié le contenu de/var/lib/dkms dans un autre répertoire en tant que sauvegarde, puis j'ai supprimé le répertoire vboxhost dans/var/lib/dkms;
mkdir ~/backup_dkms
cp -r /var/lib/dkms/* ~/backup_dkms
rm -rf /var/lib/dkms/vboxhost
J'ai ensuite reconfiguré le paquet virtualbox comme ceci:
Sudo dpkg-reconfigure virtualbox-4.2
et il a réussi à faire ceci:
* Trying to register the VirtualBox kernel modules using DKMS
Je souffrais aussi de ce problème depuis longtemps. Je dois réinstaller le pilote NVIDIA à chaque fois après la mise à jour et le redémarrage du noyau. Récemment, j'ai commencé à examiner ce problème. En fait, mon problème est qu’il existe plusieurs dossiers de module avec le même préfixe nvidia-
sous /usr/src/
et plusieurs dossiers avec des numéros de version différents sous /var/lib/dkms/nvidia
. Après avoir supprimé les anciennes versions, les deux commandes suivantes
dkms status
dkms autoinstall
travaillé.
Cela m'est arrivé une fois sur une station de travail Red Hat 7.5 avec un pilote Nvidia. Je sais que ce n'est pas Ubuntu mais cela peut aider quelqu'un ...
Supprimez les fichiers Nvidia de dkms, puis réinstallez dkms:
rm -rf /var/lib/dkms/nvidia
yum reinstall dkms
Puis réinstallez le pilote Nvidia
./NVIDIA-installer.bin --dkms
reboot
ATTENTION, cela a fonctionné pour moi mais peut ne pas être la bonne façon de faire les choses.