FS#48498 - [dkms] [linux{,-lts,-zen,-grsec}-headers] VB dependency change breaks users without headers
Attached to Project:
Community Packages
Opened by Jack O'Connor (oconnor663) - Monday, 07 March 2016, 23:25 GMT
Last edited by Sébastien Luttringer (seblu) - Sunday, 26 March 2017, 22:19 GMT
Opened by Jack O'Connor (oconnor663) - Monday, 07 March 2016, 23:25 GMT
Last edited by Sébastien Luttringer (seblu) - Sunday, 26 March 2017, 22:19 GMT
|
Details
Description:
The virtualbox package recently changed from depending on virtualbox-host-modules to depending on virtualbox-host-dkms. This in turn has a dependency on the Linux headers package for the current kernel. Because different kernels have different header packages, all of these dependencies are optional. However in fact, having at least one of them is mandatory. The result is that users who previously installed virtualbox but did not install any headers, will now be in a broken state by default, where virtualbox-host-modules gets uninstalled, but no new kernel modules get built. Most users (with the standard linux kernel package installed) need to manually install linux-headers to fix this. The only indication that they should do this, though, is when pacman reports the new optional dependencies as part of installing updates. I suspect the vast majority of users either miss this entirely or fail to recognize it as important. Lots of discussion in this thread: https://bbs.archlinux.org/viewtopic.php?id=209780 Is it possible to have the different kernel headers packages all provide some kind of virtual package, like the libgl packages do? Then virtualbox-host-dkms could take a mandatory dependency on that virtual package, and most users would be able to fix their systems when pacman asked them which provider they wanted. |
This task depends upon
1. https://lists.archlinux.org/pipermail/arch-dev-public/2016-March/027801.html
The use of dkms should be reverted.
My guess is that there are a lot of people in this state. Is there a stopgap change we could make to fix people, without waiting to resolve the questions that Allan mentioned? Options I can think of:
1. Revert the dependency change temporarily.
2. Make `virtualbox-host-dkms` take a temporary required dependency on `linux-headers`.
3. As #2, but make it a virtual dependency that any headers package can provide. (This sounds better long term, but it might need too much discussion to work as a stopgap?)
4. Publish something on Arch News.
@graysky
I can also point this earlier thread, where I announced my plan to move forward with dkms modules and asking for feedback.
https://lists.archlinux.org/pipermail/arch-dev-public/2016-February/027770.html
@majewsky
I like the idea of adding warning message when a module is registered but headers of an installed kernel are missing.
I would also not disable the current behavior of building modules when only the headers (not the kernel) is installed, because it runs depmod and create conflict with files in /usr/lib/modules/$kver/depmod.*
@allan
Packages needed to build the dkms modules are pulled by the dkms module package. So, gcc (which pull binutils) and make are pulled by vbox-host-dkms. Did I miss a technical problem here?
Mar 09 06:38:21 host systemd[1]: Failed to start Load Kernel Modules.
Mar 09 06:38:21 host systemd-modules-load[402]: Failed to find module 'vboxdrv'
Like many others pointed out, there was no notice about the need to have the headers. I can get the modules back by installing 'virtualbox-host-modules' but I can't remove 'virtualbox-host-dkms' directly because of a self-dependency?
sudo pacman -Rns virtualbox-host-dkms
checking dependencies...
error: failed to prepare transaction (could not satisfy dependencies)
:: virtualbox: removing virtualbox-host-dkms breaks dependency 'virtualbox-host-dkms'
Of course running "pacman -Rns -dd virtualbox-host-dkms" gets rid of it.
Yes, there was. You just have to pay attention to what pacman tells you.
% pacman -Qi dkms
...
Optional Deps : linux-headers: build modules against Arch kernel [installed]
linux-lts-headers: build modules against LTS Arch kernel [installed]
...
Optional Deps : linux-headers
linux-lts-headers
Which is completely non-informative.
https://projects.archlinux.org/svntogit/community.git/commit/?id=8d03310837beaa5e8b9fbeb764be660b07cdbe09
Which is both outside the scope of this ticket, and redundant anyway.
The prevailing view is that we should revert to pre-dkms changes, i.e. back to use of virtualbox-host-modules.
I experienced it myself and think it was not done professionally (learning from pacman update about vb modules
handling change, then frantically looking for some news about it on the main web site, vb wiki page stating that
for regular kernel no dkms was involved, etc).
I think you should draw some conclusion from this users disturbance.
At least take a break, and then return to it on dev list if at all.
This seems to be a good place:
https://bugs.archlinux.org/task/48514
This finally seems to create more trouble than it solves so I will remove it in -3.