我最近一直在尝试打包一个小型 Python 实用程序来放在我的 PPA 上,并且我几乎已经让它可以工作了,但是我在使包在/usr/bin. 相反,它安装在/. 我有这个目录结构 - > http://db.tt/0KhIYQL。
我的包Makefile是这样的:
TARGET=usr/bin/txtrevise
make:
chmod +x $(TARGET)
install:
cp -r $(TARGET) $(DESTDIR)
Run Code Online (Sandbox Code Playgroud)
据我了解,我已经使用它在运行时$(DESTDIR)将文件放置在debian子目录下。debuild
usr/bin我的包根目录下的文件夹下有 txtrevise 脚本,我的可执行文件。我的 tarball 中还有 和Makefile:usr/bin/textrevisetxtrevise_1.1.original.tar.gz。
然而,当我构建这个并查看 Debian 软件包内部时,txtrevise 始终位于软件包的根目录而不是下面usr/bin,并且将安装到/而不是/usr/bin.
我怎样才能将debuild脚本放在正确的位置?
谢谢。任何帮助将不胜感激。我很困惑。
环境变量在GNU 编码标准DESTDIR中定义:
DESTDIR是每个已安装目标文件前面的变量。...
如果您的安装步骤通常会安装
/usr/local/bin/fooand/usr/local/lib/libfoo.a,那么如上例中调用的安装将安装/tmp/stage/usr/local/bin/fooand/tmp/stage/usr/local/lib/libfoo.a。以这种方式将变量添加
DESTDIR到每个目标提供了“分阶段安装”,其中安装的文件不会直接放置到其预期位置,而是复制到临时位置 (DESTDIR)。但是,已安装的文件保留其相对目录结构,并且任何嵌入的文件名都不会被修改。
这是 debhelper 脚本期望 make 文件的行为方式。/usr/bin因此,如果您希望程序在安装包时出现,那么您应该将该程序复制到$(DESTDIR)/usr/bin(如果不存在则创建该目录结构)。