我如何让 debuild 将二进制文件放入 /usr/bin?

我如何让 debuild 将二进制文件放入 /usr/bin?

我最近一直在尝试打包一个小型 Python 实用程序,将其放在我的 PPA 上,我几乎已经让它工作了,但是在让软件包安装二进制文件(chmod +x Python 脚本)时遇到了问题/usr/bin。相反,它安装在下/。我有这个目录结构 ->http://db.tt/0KhIYQL

我的软件包 Makefile 如下:

TARGET=usr/bin/txtrevise

make:
      chmod +x $(TARGET)

install:
      cp -r $(TARGET) $(DESTDIR)

我已经使用过,据我了解,它在运行时$(DESTDIR)将文件放在子目录下。debiandebuild

usr/bin我的软件包根目录下的文件夹中有 txtrevise 脚本(可执行文件) 。我的 tarball 中Makefile也有usr/bin/textrevise:txtrevise_1.1.original.tar.gz。

然而,当我构建它并查看 Debian 包内部时,txtrevise 始终位于包的根目录而不是下方usr/bin,并且将被安装到/而不是/usr/bin

我怎样才能debuild将脚本放在正确的位置?

谢谢。任何帮助我都会非常感激。我被难住了。

答案1

环境DESTDIR变量定义在GNU 编码标准

DESTDIR是每个已安装目标文件前面附加的变量。

...

如果您的安装步骤通常会安装 /usr/local/bin/foo/usr/local/lib/libfoo.a,那么如上例所示调用的安装将会安装 /tmp/stage/usr/local/bin/foo/tmp/stage/usr/local/lib/libfoo.a

以这种方式将变量添加DESTDIR到每个目标前面可实现“分阶段安装”,其中安装的文件不会直接放入其预期位置,而是复制到临时位置 ( DESTDIR)。但是,安装的文件将保留其相对目录结构,并且任何嵌入的文件名都不会被修改。

这是 debhelper 脚本期望 make 文件的行为方式。因此,如果您希望在/usr/bin安装软件包时显示程序,则应将程序复制到$(DESTDIR)/usr/bin(如果不存在则创建该目录结构)。

相关内容