Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 用于跨平台部署的打包?_Unix_Deployment_Cross Platform_Packages_Packaging - Fatal编程技术网

Unix 用于跨平台部署的打包?

Unix 用于跨平台部署的打包?,unix,deployment,cross-platform,packages,packaging,Unix,Deployment,Cross Platform,Packages,Packaging,在windows上,应用程序通常打包为MSI,在Redhat Linux上打包为RPM,可以使用什么样的开源打包方法将应用程序部署到所有平台,包括不同风格的unix和windows 内容包括EXE、unix二进制文件、JavaJAR文件、用户数据,甚至要运行的数据库脚本 (我知道每个目标操作系统的内容会有所不同,即二进制文件会有所不同,win exe与unix二进制文件等,但例如,配置文件可能相同,或者在java的情况下,甚至字节码JAR也可能相同) 我希望包装支持的关键功能是不同目录的不同用户

在windows上,应用程序通常打包为MSI,在Redhat Linux上打包为RPM,可以使用什么样的开源打包方法将应用程序部署到所有平台,包括不同风格的unix和windows

内容包括EXE、unix二进制文件、JavaJAR文件、用户数据,甚至要运行的数据库脚本

(我知道每个目标操作系统的内容会有所不同,即二进制文件会有所不同,win exe与unix二进制文件等,但例如,配置文件可能相同,或者在java的情况下,甚至字节码JAR也可能相同)


我希望包装支持的关键功能是不同目录的不同用户和权限,但我认识到支持此功能的多平台可能非常困难。

而不是构建一个可以跨所有平台工作的包装,这可能是不可能的,您应该让您的构建系统为每个目标平台构建不同的软件包。

是一个开源解决方案,据我所知,它能够构建在Windows和UNIX上运行的安装程序。然而,对于Windows上的软件部署(特别是在公司环境中),MSI是一条必由之路,NSI更令人头痛


因此,我不建议您尝试为不同的平台构建单个包/安装程序。但是,正如RibaldEddie所指出的,多个包:每个平台一个。这还允许将包的内容限制为与每个平台相关的文件。

我有一个客户端,它使用IzPack创建一个安装程序(基于Java),在Windows、OS X和Linux上安装应用程序


如果您想支持多个发行版的打包,我建议帮助那些发行版的打包人员;为您的软件使用某种知名的构建系统(GNU的
autotools
或类似的
scons
waf
),并很好地记录构建、可选依赖项等

这样,当Debian、Ubuntu、Red Hat、SuSE等软件包出现时,他们就可以为您创建软件包了。如果愿意,可以选择将一个或多个发行版的打包模板包含在单独的VCS树中

如果您正在考虑为多个系统打包一个封闭源代码/专有应用程序,那么最好打包一个.tar.gz文件并记录其安装过程。您还需要确保使用的构建过程不会将任何路径信息嵌入到应用程序中,以便它可以在第三方附加软件的一些常用选择中运行,Linux(rpm和deb)和带有“make package”的OSX。CMake还简化了跨平台构建


对于示例,您可以查看avogadro,它允许您为您提到的每个平台创建安装程序包(以及从单个项目文件创建RPM、DEB、包等)

如果这确实不可能,我将不得不遵循您推荐的方法。但我仍然希望有一种解决方案也适用于所有人。我可能错误地认为这是不可能的,但我认为最佳实践可能建议您构建特定于平台的软件包。我同意RibaldEddie的观点。在我看来,安装软件是一种系统操作。如果你想给客户或管理员带来最少的惊喜,那么在特定系统上使用流行的方法似乎是最好的选择。这看起来很好,但是很昂贵。像这样的东西是免费的吗?我不知道。直到上个月我才听说IzPack。我总是为每个平台创建单独的安装程序。昂贵吗?它是许可的Apache 2.0:-?