我想制作自己的 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):
字首- 是在二进制文件前面添加路径的路径。
目标目录- 是您的二进制文件的位置。
通常(最流行的方式)从源代码生成二进制文件的工作流程如下所示(这只是示例):
./configure --prefix=/prepend/path ...
。make ...
。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
对此问题的评论中给出了很好的澄清。