我最近一直在尝试打包一个小型 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)
将文件放在子目录下。debian
debuild
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
(如果不存在则创建该目录结构)。