![如果有两个 dkms 模块,我该如何卸载?](https://linux22.com/image/1142503/%E5%A6%82%E6%9E%9C%E6%9C%89%E4%B8%A4%E4%B8%AA%20dkms%20%E6%A8%A1%E5%9D%97%EF%BC%8C%E6%88%91%E8%AF%A5%E5%A6%82%E4%BD%95%E5%8D%B8%E8%BD%BD%EF%BC%9F.png)
我有 2 个相同版本的 dkms 模块:
$ dkms status
rtl8812AU, 4.3.14, 4.4.0-45-generic, x86_64: installed
rtl8812AU, 4.3.14, 4.4.0-47-generic, x86_64: installed
当我尝试时,dkms uninstall -m rtl8812AU -v 4.3.14
第二个被卸载了。我该如何卸载第一个?谢谢!
答案1
要删除所有内核的模块,您可以运行
sudo dkms remove rtl8812AU/4.3.14 --all
答案2
你没有两个 DKMS 模块。你有一为以下项目构建并安装 DKMS 模块二不同的内核版本。
根据经验,除非有特殊原因,否则不应手动卸载仍安装的内核的 DKMS 模块。(无需手动卸载通过包管理器删除的内核的模块,因为 DKMS 已经通过包删除挂钩处理了该问题 - 假设内核已正确打包。)
如果你确实想卸载该模块特别的内核,你可以参考dkms(8)
手动的:
-k <kernel-version>/<arch>
执行操作的内核和架构。您可以在命令行上指定多个内核版本/架构对,方法是
-k
使用不同的内核版本和架构重复该参数。但是,并非所有操作都支持多个内核版本(在这种情况下会出错)。架构部分可以省略,DKMS 会假定您希望它是当前正在运行的系统的架构。
因此,卸载内核相关模块的命令4.4.0-45-generic
是:
dkms uninstall -k 4.4.0-45-generic rtl8812AU
您可以省略模块版本,因为无论如何您都无法为同一个内核安装模块的多个版本。