我正在 Ubuntu 20 和 Ubuntu 22 上创建与平台无关的 Debian 软件包 - 目的是安装在 ARM 和 AMD64 处理器架构上。我的 Debian 软件包依赖于其他软件包以我的一个软件包的控制文件为例
Package: my-package
Version: 1.2.3
Architecture: all
Multi-Arch: allowed
Essential: no
Priority: optional
Pre-Depends: openjdk-11-jdk:any
Depends:
Maintainer: yours truely
Description: This is architecture agnostic package
该包依赖于其他包 - 例如 open-jdk
但是,当我尝试在 arm 服务器上安装“my-package”时,出现以下错误
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
apt install my-package
my-package : PreDepends: openjdk-11-jdk:any but it is not installable
E: Unable to correct problems, you have held broken packages.
已安装 open-jdk 软件包(见下文),但这是原生“arm64”架构,因此不考虑依赖项解析
apt list --installed |grep openjdk-11-jdk
openjdk-11-jdk/focal-updates,focal-security,now 11.0.20.1+1-0ubuntu1~20.04 arm64
[installed]
所以我的问题如下 **如何指定我的包控制文件中的依赖项,以允许具有“体系结构:全部”的包的依赖项与本机体系结构的可用包相符**
我认为在子句 pre-depends 中的包名称中添加“:any”后缀可以解决问题(见下文)
“Pre-Depends: openjdk-11-jdk:any”(这是否应该允许任何架构的包(包括“amd64”架构)满足依赖关系?)
根据我目前的经验,这种情况似乎没有发生。apt 安装程序正在寻找具有“所有”体系结构的软件包以解决依赖关系,并且不会解决具有 amd64 体系结构的软件包的依赖关系
我是否应该指定类似的内容 - 针对不同架构的同一包使用不同后缀的多个条目?
Pre-Depends: openjdk-11-jdk:amd64[amd64], openjdk-11-jdk:arm64[arm64]
在此先感谢您的帮助
此致
约格什