下面是使用创建 Debian 软件包时的工作控制文件关联。我保留了一个依赖项并且它正在创建 deb 文件。
Package: my-program
Version: 1.0
Architecture: all
Essential: no
Priority: optional
Depends: default-jdk
Maintainer: Your Name
Description: A short desc
但如果我保留多个依赖项,就会出现错误。我保留的依赖项不是实际的,只是为了测试。
Package: my-program
Version: 1.0
Architecture: all
Essential: no
Priority: optional
Depends: default-jdk;net-tools
Maintainer: Your Name
Description: A short desc
dpkg-deb --build my-program_version_architecture/ dpkg-deb: 错误: 解析文件“my-program_version_architecture//DEBIAN/control”第 6 行附近软件包“my-program”:“Depends”字段,软件包名称“default-jdk;net-tools”无效:不允许使用字符“;”(只能使用字母、数字和字符“-+._”)
即使对于使用单一依赖项创建的 deb 文件,当我尝试安装时,对于我保存在 DEBIAN 文件夹中用于安装的文件夹,我也收到如下错误。
dpkg:错误处理存档 /home/azureuser/my-program_version_architecture.deb (--unpack):无法打开文件“/var/lib/dpkg/tmp.ci//testing”:是一个目录
答案1
从语法上讲,;
不是正确的分隔符,而是,
。因此,它被视为包名称的一部分。从声明包之间的关系,重点是我的:
这些字段都有统一的语法。它们是包名称的列表被逗号隔开。
在 包的
Depends
、Recommends
、Suggests
、 和 控制字段 中 ,声明了对其他包的依赖关系,列出的包名称可能还包括备选包名称列表,以竖线(管道)符号 分隔Pre-Depends
。 在这种情况下,依赖关系的这一部分可以由任何一个备选包来满足。Build-Depends
Build-Depends-Indep
Build-Depends-Arch
|
他们还举例说明:
Package: mutt Version: 1.3.17-1 Depends: libc6 (>= 2.2.1), default-mta | mail-transport-agent
看看控制文件的语法。