【问题标题】:Language for cross-platform install script跨平台安装脚本的语言
【发布时间】:2011-10-21 16:46:55
【问题描述】:

在编写安装脚本时,我很快发现我会遇到跨平台问题,而且 bash 脚本很难维护。我决定寻找一种更简洁的跨平台解决方案。

目标是让智能脚本嗅出用户系统的组件并尽可能少地进行用户交互。话虽如此,我想到了这些语言:

  • Python- 跨平台,很多其他程序都依赖它,所以它可能已经存在了
  • Javascript- 我的应用程序的一部分需要 nodejs,但它对于 exec 调用来说有点笨拙

是否有任何语言更适合此应用程序?

要求:

  • 适用于所有平台
    • 如果足够小,可以作为我的应用程序的一部分分发
    • 几乎没有版本变化,因此 Ruby 已淘汰
    • *nix 目前仅适用,但最终将在 Windows 上运行
  • 可维护
    • 清晰的语法(Perl 已淘汰)
    • 模块化(如果我嗅探操作系统,我可以包含单独的操作系统特定代码)
  • 能够下载文件(未满足的依赖关系)
  • 能够执行相对复杂的脚本任务
    • 测试使用的 HTTP 端口
    • 读取和解析配置数据文件
    • 检查权限并更改权限不足的目录
  • 开源

【问题讨论】:

    标签: cross-platform installscript


    【解决方案1】:

    Python 可以做所有这些事情:

    • 适用于所有平台(Mac、Linux、Windows 等)
      • 如果足够小,可以作为我的应用程序的一部分分发(如果需要,您可以使用cx_freeze 制作二进制文件)
      • 几乎没有版本变化,因此 Ruby 已淘汰(Python 在版本更改方面相当静态)
      • *nix 目前仅适用,但最终将在 Windows 上运行 (它预装在 Mac 上,并随几乎所有 Linux 发行版一起提供。二进制文件不需要解释器即可运行)
    • 可维护
      • 语法清晰(Perl 已淘汰)(Python 非常容易阅读,但由您决定)
      • 模块化(如果我嗅探操作系统,我可以包含单独的操作系统特定代码)(模块只是 Python 中的文件)
    • 能够下载文件(未满足的依赖项)Urllib2 负责处理,并且已预先安装)
    • 开源(是的)

    【讨论】:

    • 本周早些时候我刚刚开始学习 Python。调用原生命令行应用程序(grep、sed、cat 等)有多简单?
    • 捕获命令的输出有点困难(不难,但不止一行代码),因此 Python 以一种或另一种方式实现了大多数这些命令。 cat 将是 open('file.txt', 'r').read()。你会发现它不像你想调用系统命令那么容易(它只是import osos.system('foo'),顺便说一句),但从长远来看,原生解决方案更容易使用。 TL;DR:当你了解更多关于 Python 的知识时,你会学到这些东西
    • 具有讽刺意味的是,我首先考虑 Python 的原因是因为我开始在 Blender 中工作。感谢大家的帮助!
    • 我也是 ;) 这是一门不错的语言,但我从来没有真正将它用于 Blender。也许一次用于 3D 绘图仪,但仅此而已。您会喜欢它在切换数据类型时不会中断的方式。
    • 像 Javascript。能够将东西分配给变量是很好的,而不必担心类型。我认为 Python 是完成这项工作的工具,但我会暂时保留它以防万一有人提出更好的东西。
    【解决方案2】:

    蚂蚁会做你需要的。它独立于操作系统,允许编译和安装。

    【讨论】:

    • 我不太熟悉。它是否允许编写相对复杂的脚本(例如从 Web 下载内容、扫描 HTTP 端口、根据用户输入生成文件)?
    猜你喜欢
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 2012-05-23
    相关资源
    最近更新 更多