dpkg-buildpackage(debhelper)中获取包名或构建目录的方法咨询
可用的解决方案如下
debhelper 本身提供了多种内置机制获取包名和对应构建目录,不需要硬编码包名:
- 使用内置
DESTDIR变量(最推荐)
标准 debhelper 构建流程中,DESTDIR变量默认就指向当前包的构建目录,也就是你需要的$(CURDIR)/debian/<实际包名>路径,直接替换即可:
override_dh_fixperms: dh_fixperms chown my-user:my-user $(DESTDIR)/etc/my-config
这种写法完全不需要关心实际包名,后续包名规则变化也不需要修改配置。
- 使用内置
PACKAGE变量
debhelper 执行包级别的 override 目标时,会自动注入PACKAGE变量,值为当前构建的二进制包名,可以直接拼接路径:
override_dh_fixperms: dh_fixperms chown my-user:my-user $(CURDIR)/debian/${PACKAGE}/etc/my-config
- 使用
dh_listpackages命令动态获取
如果是更复杂的场景,可以调用dh_listpackages命令直接输出当前构建的所有二进制包名,单包构建场景下直接取输出即可:
override_dh_fixperms: dh_fixperms chown my-user:my-user $(CURDIR)/debian/$(shell dh_listpackages)/etc/my-config
你之前打印环境变量没有找到对应变量,是因为这类变量是 debhelper 在执行 override 目标的上下文才会注入,全局环境默认不存在。
内容的提问来源于stack exchange,提问作者rookie099
相关产品推荐
相关产品推荐

