【问题标题】:which language (python/perl/tcl) on linux doesn't need to install the third-party libs?linux 上哪种语言(python/perl/tcl)不需要安装第三方库?
【发布时间】: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


    【解决方案1】:

    Perl 5 有PARPAR::PackerPAR 在概念上类似于 JAR 文件(它是一个或多个模块的 zip 文件)。 PAR::Packer 更进一步:它将运行程序所需的所有内容捆绑到一个可执行文件中。 PAR::Packer 可执行文件甚至不需要在目标系统上安装 Perl 5。

    【讨论】:

    • 谢谢,查斯!但是 perl... 如果没有其他人的话,我真的是最后的选择,因为它对我来说似乎有点晦涩。
    • @Wind SC 它怎么比 JAR 更晦涩难懂?这是相同的基本概念。
    • 我认为 Wind SC 意味着 Perl 本身对他来说有点晦涩 :o)
    • 啊,这有点道理,但是写得好的 Perl 代码并不比任何其他语言差。
    • @Wind SC:如果 Perl 对你来说太晦涩难懂,你不应该将它包含在你的问题(或标签)中,这样 Perl 的人就会知道不要打扰
    【解决方案2】:

    perl、python 和 tcl 可以在不安装它们的情况下运行第 3 方库,选择您最熟悉的库

    tcl 有starkits and starpacks

    perl 被另一个answer覆盖

    python 似乎有 eggsfreeze(对于 windows,py2exe

    【讨论】:

    • 如何在 python 中做到这一点?有没有办法将所有内容打包成单个文件?像罐子。
    • +1 用于提及星包;它们似乎正是提问者所追求的。
    【解决方案3】:

    Tcl 应用程序可以包装成一个包含所有依赖项的单文件可执行文件。我已经将这些用于几个应用程序。您可以为 Linux、Windows 和 OSX 生成单文件可执行文件。

    来自http://www.equi4.com/starkit/

    Starkit 是一种包装机制 交付应用程序 独立、免安装、 高度便携的方式。名字来了 从基于独立 运行时,称为 Tclkit。

    小星猫创造了一个幻觉 “文件中的文件系统” - 关于 在外面,它是一个文件,但 应用程序代码继续看到 完整的脚本目录, 扩展、包、图像和 它需要的任何其他文件。 Starkits 可以是多平台的。和 他们可以被写入,由于 底层 Metakit 数据库。

    【讨论】:

    • 应该注意的是,您可以从 Starkit 中加载二进制扩展代码,从而可以非常轻松地发布整个复杂的应用程序,而无需任何安装步骤(或实际上“胖”的支持的单个库对于许多不同的架构)。唯一不透明的情况是当您想要将数据传递给的 API 仅采用文件名时;这是少数,但确实包括execve()
    【解决方案4】:

    在 Linux 上,您应该使用发行版的本机包格式(DEB、RPM、...)来部署应用程序。发行版中包含的包管理器可以自动处理依赖关系。

    除此之外,我认为 Perl 是大多数 Linux 系统开箱即用的唯一语言。 Python 也很受欢迎,但可能没有那么普遍。

    【讨论】:

    • 谢谢,菲利普! DEB/RPM 是一个很好的解决方案,因此我们的 SA 的依赖关系可能很清楚,但我们需要应用程序可以在没有 SA 帮助的情况下自行升级,包括使用的第三方库。实际上我们的目标是一个非侵入式系统,不依赖于操作系统级别。
    • @Wind 遗憾的是,Perl 可能是普遍可用的,但许多最有用的 CPAN 模块却不是(我想到了List::MoreUtils),所以要么你将被限制在核心功能上,要么使用PAR 为 Chas。说。
    • @Wind SC - 这在很大程度上取决于 SA 的设置 - 在可能的地方,除了 SA 之外,任何人都无法更新可执行文件 - 即设置了目录权限,因此很少有人可以写入代码 - 这通常是为了阻止病毒等,并提供对正在运行的确切内容的审计,以便在推出之前批准更改。
    • List::MoreUtils 只是适度有用(该模块中的任何东西都可以使用 core 的 foreach、map 或 grep 或 List::Util 的 reduce 构建),更有用的 List::Util 在 core .
    【解决方案5】:

    昨天偶然发现: http://code.activestate.com/recipes/497000-build-a-compressed-self-extracting-executable-scri/

    该页面展示了如何将包含 python 脚本的 zip 文件轻松转换为可执行文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多