You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在debhelper dh_gencontrol中使用变量追加Debian包描述信息

问题根因

  • Makefile的变量定义不需要引号标记字符串边界,你写的TEXT_STRING = "string with data"会把双引号也纳入变量值,传递给shell后引号被解析,导致字符串被拆分为多个独立参数
  • 你使用的${TEXT_STRING// /_}是Bash专属的参数替换语法,而Make默认调用/bin/sh执行规则内的命令,大部分Debian系统的默认sh是dash,不支持该语法,空格替换未生效进一步加剧了参数拆分问题

解决方法

  1. 修改变量定义,去掉多余的双引号,直接赋值带空格的字符串即可
  2. 用Make原生的字符串替换函数subst完成空格转下划线的操作,不依赖shell类型兼容性更好
  3. 给printf的每个参数外层加单引号,确保shell把整个字符串识别为单个参数,不会按空格拆分

修改后的完整代码段

TEXT_STRING = string with data
VERSION_NUM = v11.4
...
...
override_dh_gencontrol:
	dh_gencontrol
	@echo "Adding versions to debian/control file"   # This one writes to console
	@printf ' %-30s %-20s %s\n' '$(subst  ,_,$(TEXT_STRING))' '$(VERSION_NUM)' '$(TEXT_STRING)' >> "$(CURDIR)/debian/my-package/DEBIAN/control"

补充说明

如果你的TEXT_STRING中本身包含单引号,可以在变量引用时增加转义处理:$(subst ','\'',$(TEXT_STRING)),避免单引号提前闭合导致shell解析错误。

内容的提问来源于stack exchange,提问作者Ezekiel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:15:04