我开发了一个 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 位操作系统上,那就太好了。如何做到这一点?
我不认为自己打包 Java 运行时是最好的解决方案,但如果它确实是不可避免的,你可以创建一个包,它可以在主要架构是
amd64
通过添加控制文件的入口。
(这保证是足够的,因为系统的主要架构是已安装
dpkg
软件包的架构。由于dpkg
不能在多个架构上共同安装,这种方法还避免排除能够运行 64 位程序但未设置的多架构设置amd64
作为他们的主要架构。)如果您确实想继续使用重新打包的 JRE,我鼓励您检查您正在使用的 JRE 的许可证,并修复您的包,使其不涉及手动步骤 - 至少,您应该将库依赖项添加到您的 JRE需要。