如何分配一个虚拟机,让用户尝试一个依赖性大的程序?

我写了一个学术软件,有许多第三方软件依赖关系(并需要RDBMS)。 我想创build一个预先安装了所有必要的依赖项和用户帐户的Linux虚拟机映像,以便我的用户可以下载和试用我的软件,而无需安装所有的依赖关系。

什么是最好的方式来做到这一点,我应该使用什么样的虚拟机文件格式?

就我个人而言,我会提供Virtualbox和VMWare格式,因为Virtualbox是免费的,VMWare的播放器是免费的,支持和stream行。

你最好的办法是什么意思? 如果您的意思是提供给用户,您可以随时创buildCD / DVD并通过邮件免费提供和/或通过CDN或个人网站提供; 你没有提到你有什么资源可供你使用。 你有一个网站吗? 这是企业的一部分吗? 这是一个侧面的爱好吗?

结果图像会有多大? 他们压缩了吗?

这可能是一个受欢迎的下载,可能会使您的网站紧张或税收与您的提供商有任何转让限制?

根据您的目标受众的精明程度,您也可以通过BitTorrent提供帮助,以减轻networking上的压力(或者如果您可以与其他网站达成协议,则可以将其作为种子网站分发给他们)。 您甚至可以将异地托pipe的图像提供给专门托pipe大型文件的公司,因此您不必担心大型文件的内容交付。

这种问题可以归结为一个问题,即您可以获得哪些资源,以及最终用户对于如何详细阐述最终用户试用产品的要求有多了解。 有些人可能不喜欢下载单独的产品来试用虚拟机。 其他系统pipe理员可能已经安装了VMWare或VMWare播放器或Virtualbox。

您可能想要查看OVF ,这是最有可能成为虚拟设备行业标准的有力竞争者。 它主要由VMware和VirtualBox支持,这两个平台都可能是您想要的目标; Xen在XenServer中受支持,而RHVM则支持KVM,对底层pipe理程序产品的本机支持仍然即将推出。

您是否知道您的用户可以访问某个特定的虚拟机pipe理程序? 这会有很大的帮助

一个远离免费的方法是使用VMWare的ThinApp系统打包一个虚拟机,并将其与一个光pipe理程序捆绑在一个.exe文件中 – 这对用户影响非常小,但是花费不菲。

为了这个目的,我宁愿避免使用虚拟图像。 考虑使用Puppet而不使用主/angular色。 (或者厨师 ,或者任何其他的select)然后,你只需要在一个文件中发送你需要的规格。

你唯一需要提供的就是你的Puppet类和一个示例节点定义。 然后告诉用户在其中一个支持的操作系统上安装Puppet代理并运行

puppet apply myapplication.pp 

优点:

  • 您只能发送包含正在安装的规范的文本文件。 (理想情况下,如果所有的依赖都可以从一般公共场所得到满足)
  • 它可以重用于其他操作系统和版本。
  • 虚拟机中的软件始终是最新的(安全明智,或至less这不是你的工作了)。
  • 可以在机器的现有设置中运行。
  • 最终用户可以查看对其系统所做的更改,而不是从其可信networking中的外部不可信来源启动虚拟机。
  • 通过发布Puppet文件的更新,用户可以轻松更新,而无需安装新的虚拟机。

缺点:

  • 花费相当多的努力来创build一个好的和无bug的Puppet文件。
  • 不是所有的事情都可能非常容易被嘲弄。