dh_auto_install 的 prefix 和 destdir 参数之间有什么区别?

dh_auto_install 的 prefix 和 destdir 参数之间有什么区别?

我想制作自己的 debian 软件包,并将其安装在/opt/A/B/C.

当覆盖dh_auto_install文档显示您可以使用 params--destdir=-- prefix=.

如果我想安装我的 debian 内容,/opt/A/B/C我可以通过以下方式指定:

override_dh_auto_install:
    dh_auto_install -- prefix=/opt/A/B/C

或者

override_dh_auto_install:
    dh_auto_install --destdir=/opt/A/B/C

注意:我计划将 deb 安装到 Ubuntu 14.04 系统上。

答案1

dh_auto_install只承认--destdir为一个选项;当您编写 时-- prefix=...,这不是一个dh_auto_install选项,它是一个参数,传递给任何程序dh_auto_install确定它需要运行才能执行安装。

然而,dh_auto_install这可能不是适合您想要实现的目标的工具。最终的安装前缀通常是在配置时指定,而不是在安装时指定;为此,您需要覆盖dh_auto_configure

override_dh_auto_configure:
        dh_auto_configure -- --prefix=/opt/A/B/C

答案2

你应该知道之间的区别字首目标目录 (destdir):

字首- 是在二进制文件前面添加路径的路径。

目标目录- 是您的二进制文件的位置。

通常(最流行的方式)从源代码生成二进制文件的工作流程如下所示(这只是示例):

  1. ./configure --prefix=/prepend/path ...
  2. make ...
  3. make install DESTDIR=/path/for/binaries

如你看到的,字首在配置步骤中设置。

第 3 步之后,构建的文件将安装/path/for/binaries并位于/path/for/binaries/prepend/path.

当您构建包时,您将拥有包含源代码的目录以及debian其中的目录。

如果您的程序必须位于/opt/A/B/C您应该覆盖dh_auto_configure人 1 dh_auto_configure) 目标debian/rules如下:

override_dh_auto_configure:
    dh_auto_configure -- --prefix=/opt/A/B/C 

此步骤对应于在寻求答案时提到的步骤 1。

然后,就不需要重写debian/rules.


@StephenKitt 在dh_auto_install对此问题的评论中给出了很好的澄清。

相关内容