是否可以配置 .deb 包,使其仅安装在 32 位操作系统上,而不安装在 64 位操作系统上?

是否可以配置 .deb 包,使其仅安装在 32 位操作系统上,而不安装在 64 位操作系统上?

我开发了一个 Java 8 应用程序。

我已经为 Linux 系统打包了它,自包含 Java 运行时,因此用户不必处理 Java 安装。

我已经制作了一个包含 32 位 Java 运行时的包,以及第二个包含 64 位 Java 运行时的包。

在64位包中,我Architecture: amd64在控制文件中进行了设置,因此无法安装在32位操作系统上。效果很好。

并且在我设置的32位包中Architecture: i386,但这仍然允许应用程序安装在amd64操作系统上。

如何使用 32 位 JRE 配置 .deb 包,使其无法安装在 64 位操作系统上?我想限制它只能安装在 32 位操作系统上。

我想限制它,因为使用 32 位独立 Java 8 JRE 安装应用程序无法在 64 位系统上正常工作(我的意思是不需要额外的工作)。缺少库:libxi6libxrender1libxtst6libudev1。即使我为i386拱门安装它们,应用程序也不会崩溃,但应用程序的某些方面无法完美运行,例如 MIDI 设备检测。

如果 32 位软件包无法安装在 64 位操作系统上,那就太好了。如何才能实现这一目标?

答案1

我不认为自己打包 Java 运行时是最好的解决方案,但如果确实不可避免,您可以创建一个包,该包将在主要架构是amd64通过添加

Conflicts: dpkg:amd64

进入控制文件。

(这保证是足够的,因为系统的主要体系结构是已安装dpkg软件包的体系结构。由于dpkg不能在多个体系结构上共同安装,因此这种方法还避免排除能够运行 64 位程序但不能设置的多体系结构设置amd64作为他们的主要架构。)

如果您确实想继续使用重新打包的 JRE,我鼓励您检查正在使用的 JRE 的许可证,并修复您的包,这样它就不会涉及手动步骤 - 至少,您应该将库依赖项添加到您的 JRE需要。

相关内容