将dkms安装到没有编译器的Ubuntu机器上

时间:2015-08-13 18:15:52

标签: linux ubuntu kernel-module apt dpkg

我尝试将 dkms 安装到没有 make gcc 的计算机上。 我打算只将二进制文件推送到那些目标计算机。

在我的构建计算机上,我计划使用 dkms 构建 dkms 启用的模块,然后使用dkms mktarball ... --binaries-only创建tarball以进行分发。

我想将这些tarball推送到目标机器,并在那些机器上我 想使用dkms ldtarball,所以目标机器确实需要 dkms , 但他们不需要 gcc (或 make )。

  1. 构建(主机)和目标计算机运行相同的Ubuntu
  2. 目标上的
  3. apt-get install dkms会自动引入 gcc
  4. 下载 dkms.deb apt-get download dkms)并使用dpkg --install --ignore-depends=gcc ... dkms.deb进行安装 确实有效,但是依赖关系没有得到解决,因此任何未来的 apt-get (例如安装其他一些包)都会失败。
  5. 我可以尝试使用 equiv 包创建 gcc make 的虚拟安装,但这似乎是一个糟糕的黑客我&# 39;我宁愿避免。如果我想要实际安装它也可能会产生问题 gcc在未来的目标上。
  6. 在dkms README(第3节)中有关于此的说明,但没有关于如何完成它的指导。 "如果您选择不在系统上加载模块源,或者您选择不加载模块源 编译器...... DKMS仍可用于安装模块。"。

    (对不起,如果标签有误导性...... dkms 没有可用的标签)

2 个答案:

答案 0 :(得分:0)

创建一个本地虚拟包,假装安装gcc以及您想要阻止系统的任何其他deps。 equivs包可以用于此,但它也很简单,也可以手工完成。

答案 1 :(得分:0)

非常感谢Darik Horn的出色(离线)答案。

他建议使用/etc/apt/preferences.d来 pin 不需要的软件包。该解决方案看起来很有希望,我将进一步探讨(并在可能的情况下发布结果)。

我能够找到另一个解决方案Ubuntu ForumsSuperuser看起来很有希望。

脚本执行的步骤可以手动完成,基本上就是这样:

  1. mkdir
  2. dpkg-deb -x dkms ... deb
  3. dpkg-deb --control dkms ... deb / DEBIAN
  4. 编辑/ DEBIAN /控制文件取决于
  5. dpkg -b dkms-modified -... deb