在Debian软件包安装过程中重命名文件

我有一个Python脚本,我想要打包为Debian。我使用了一个debian/install文件,在其中编写了以下内容。
auto_dice.py /usr/bin/

Linitan随后抱怨.py扩展名(带有语言扩展的脚本)。
然后我将其更改为。
auto_dice.py /usr/bin/autodice.py

这会导致错误,因为它将autodice.py解释为一个目录。

我该如何在那里进行重命名?我不想在源文件中重命名我的Python脚本。

3个回答

从{{link1:Debian bug 245554}}已经提到的:

如果您使用dh >= 9和dh-exec,这个问题已经很容易解决。只需将您的.install文件设置为可执行,添加#!/usr/bin/dh-exec到顶部,然后您可以使用"source => dest",就像这样:

#!/usr/bin/dh-exec
debian/default.conf => /etc/my-package/start.conf

这绝对是最好的方法。实际上没什么要做的,只需确保已安装了 dh-exec,用不同的名称输入要安装的文件列表,并确保 install 文件是可执行的(chmod a+x)。非常简单! - Alexis Wilke

您不能使用dh_install(通过debian/install)重命名文件。您需要在debian/rules的"build"目标中在调用dh_install之前对其进行重命名。

是这样的,你需要执行以下命令:build: \\ mv auto_dice.py autodice - Martin Ueding
很可能mv操作会发生在目标目录而不是构建目录中,但是是的,在调用dh_install之前你需要添加移动操作。 - Kees Cook
有关请求此功能的错误报告,请参阅http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=245554 - Bernhard Reiter
@Kees Cook:如果你在目标目录中重新命名它,apt-get 在卸载/升级软件包后是否仍然能够删除该文件? - zerkms

我想要说明一下,如果要安装的文件是一个文件夹,你也可以使用模式来重命名它。这可能不是很明显,所以我觉得举个例子会是个好主意。
假设你有一个名为“source”的配置文件夹,你想要将其安装到目标机器上并命名为“destination”。你的.install文件应该是这样的:
path/to/source/*       path/to/destination/

这很简单,但是在安装整个文件夹时,你可能没有考虑使用这种模式。