我开发了一个 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 位系统上正常工作(我的意思是不需要额外的工作)。缺少库:libxi6
、libxrender1
、libxtst6
、libudev1
。即使我为i386
拱门安装它们,应用程序也不会崩溃,但应用程序的某些方面无法完美运行,例如 MIDI 设备检测。
如果 32 位软件包无法安装在 64 位操作系统上,那就太好了。如何才能实现这一目标?
答案1
我不认为自己打包 Java 运行时是最好的解决方案,但如果确实不可避免,您可以创建一个包,该包将在主要架构是amd64
通过添加
Conflicts: dpkg:amd64
进入控制文件。
(这保证是足够的,因为系统的主要体系结构是已安装dpkg
软件包的体系结构。由于dpkg
不能在多个体系结构上共同安装,因此这种方法还避免排除能够运行 64 位程序但不能设置的多体系结构设置amd64
作为他们的主要架构。)
如果您确实想继续使用重新打包的 JRE,我鼓励您检查正在使用的 JRE 的许可证,并修复您的包,这样它就不会涉及手动步骤 - 至少,您应该将库依赖项添加到您的 JRE需要。