如果有两个 dkms 模块,如何卸载它们?

use*_*256 7 uninstall dkms

我有 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
Run Code Online (Sandbox Code Playgroud)

当我尝试dkms uninstall -m rtl8812AU -v 4.3.14卸载第二个时。第一个怎么卸载?谢谢!

Pil*_*ot6 19

要删除所有内核的模块,您可以运行

sudo dkms remove rtl8812AU/4.3.14 --all
Run Code Online (Sandbox Code Playgroud)


Dav*_*ter 12

您没有两个 DKMS 模块。您为两个不同的内核版本构建并安装了一个DKMS 模块。

根据经验,除非有特定原因,否则不应手动卸载仍在安装的内核的 D​​KMS 模块。(无需为通过包管理器删除的内核手动卸载模块,因为 DKMS 已经通过包删除挂钩处理了这一点——假设内核已正确打包。)


如果你真的想卸载特定内核的模块,你可以参考dkms(8)手册

-k <kernel-version>/<arch>

执行操作的内核和架构。通过-k使用不同的内核版本和架构重复参数,您可以在命令行上指定多个内核版本/架构对。但是,并非所有操作都支持多个内核版本(在这种情况下会出错)。arch 部分可以省略,DKMS 会假设您希望它是当前运行系统的 arch。

因此,卸载内核相关模块的命令4.4.0-45-generic是:

dkms uninstall -k 4.4.0-45-generic rtl8812AU
Run Code Online (Sandbox Code Playgroud)

您可以省略模块版本,因为无论如何您都无法为同一个内核安装多个版本的模块。