我试图将dkms安装到没有make或gcc的机器上。我计划只向这些目标机器推送二进制文件。
在我的构建机器上,我计划使用dkms来构建dkms启用的模块,然后使用dkms mktarball ... --binaries-only
创建tarball用于分发。
我想把这些tarball推到目标机器上,在这些机器上我想要使用dkms ldtarball
,所以目标机器确实需要dkms,但是他们不需要 gcc (或)。
- 构建(主机)和目标机器运行相同的Ubuntu
- 目标上的
apt-get install dkms
自动引入gcc - 下载dkms.deb (
apt-get download dkms
)并使用dpkg --install --ignore-depends=gcc ... dkms.deb
安装可以工作,但是没有解决依赖关系,因此任何未来的apt-get(例如安装其他包)都失败。 - 我可以尝试使用equiv包来创建gcc和make的虚拟安装,但这似乎是一个可怕的hack,我宁愿避免。此外,如果我想要实际安装,它可能会产生问题
在dkms README(第3节)中有关于这个的说明,但是没有指导如何完成它。如果您选择不在系统上加载模块源,或者选择不加载编译器……DKMS仍可用于安装模块".
(抱歉,如果标签误导…dkms)
创建一个本地虚拟包,假装安装gcc和任何其他您希望远离系统的深度包。equivs
包可以用于此,但它也足够简单,可以手工完成。
非常感谢Darik Horn的精彩(离线)回答。
他建议使用/etc/apt/preferences。D到引脚不需要的包。这个解决方案看起来很有希望,我将进一步探索(如果可能的话,在这里发布结果)。
我找到了另一个解决方案Ubuntu论坛和超级用户看起来很有希望。
脚本执行的步骤可以手动完成,基本上是这样的:
- mkdir
- dpkg-deb -x dkms…deb
- dpkg-deb—control dkms…deb/DEBIAN
- 编辑/DEBIAN/control文件依赖行
- dpkg -b dkms-modified-…deb