【发布时间】:2011-04-10 04:37:49
【问题描述】:
在linux上部署java app时,我们不需要安装任何东西,所有第三方库都是jar文件,我们只更新脚本文件中的classpath。但是java需要jre,jre很大。
那么 linux 支持的任何其他语言可以做到这一点吗?默认情况下,我们的服务器只支持 perl/python/tcl,没有 gcc 可用,sigh。
【问题讨论】:
标签: java python linux perl tcl
在linux上部署java app时,我们不需要安装任何东西,所有第三方库都是jar文件,我们只更新脚本文件中的classpath。但是java需要jre,jre很大。
那么 linux 支持的任何其他语言可以做到这一点吗?默认情况下,我们的服务器只支持 perl/python/tcl,没有 gcc 可用,sigh。
【问题讨论】:
标签: java python linux perl tcl
Perl 5 有PAR 和PAR::Packer。 PAR 在概念上类似于 JAR 文件(它是一个或多个模块的 zip 文件)。 PAR::Packer 更进一步:它将运行程序所需的所有内容捆绑到一个可执行文件中。 PAR::Packer 可执行文件甚至不需要在目标系统上安装 Perl 5。
【讨论】:
perl、python 和 tcl 可以在不安装它们的情况下运行第 3 方库,选择您最熟悉的库
perl 被另一个answer覆盖
【讨论】:
Tcl 应用程序可以包装成一个包含所有依赖项的单文件可执行文件。我已经将这些用于几个应用程序。您可以为 Linux、Windows 和 OSX 生成单文件可执行文件。
来自http://www.equi4.com/starkit/:
Starkit 是一种包装机制 交付应用程序 独立、免安装、 高度便携的方式。名字来了 从基于独立 运行时,称为 Tclkit。
小星猫创造了一个幻觉 “文件中的文件系统” - 关于 在外面,它是一个文件,但 应用程序代码继续看到 完整的脚本目录, 扩展、包、图像和 它需要的任何其他文件。 Starkits 可以是多平台的。和 他们可以被写入,由于 底层 Metakit 数据库。
【讨论】:
execve()…
在 Linux 上,您应该使用发行版的本机包格式(DEB、RPM、...)来部署应用程序。发行版中包含的包管理器可以自动处理依赖关系。
除此之外,我认为 Perl 是大多数 Linux 系统开箱即用的唯一语言。 Python 也很受欢迎,但可能没有那么普遍。
【讨论】:
昨天偶然发现: http://code.activestate.com/recipes/497000-build-a-compressed-self-extracting-executable-scri/
该页面展示了如何将包含 python 脚本的 zip 文件轻松转换为可执行文件。
【讨论】: