代码之家  ›  专栏  ›  技术社区  ›  Tom Kidd

在没有虚拟化的情况下,如何在Macintosh上完成“干净”的测试?

  •  6
  • Tom Kidd  · 技术社区  · 15 年前

    我在Windows上遇到的一个问题是,当您正在开发的Web浏览器插件或程序假设安装了默认情况下并不总是存在于Windows上的某个组件时。一个很好的例子就是.NET-很多运行Windows XP的人从未安装过任何版本的.NET,因此安装程序需要检测并在必要时进行补救。

    我在Windows中测试这一点的方法是让一个虚拟机拥有一个干净的快照,补丁,但不受影响的xp或vista或7或其他版本的安装。当我完成测试后,我就放弃了自快照以来所做的任何更改。工作很好。

    我现在正在为Macintosh开发一些东西,这是一个对我来说非常新的平台,我发现虚拟化似乎不是一个选择。在mac os x的eula中是明确禁止的,只有mac os x server才允许这样做,因为我将目标锁定在一个最终产品上对我来说毫无用处,而我看到的一个可以虚拟化它的程序-virtualbox-只支持服务器,并且主动发起任何关于运行mac os x的消费者/客户版本的讨论。我在这个话题上找到的任何地方的指令似乎都涉及到“黑客”程序的使用,这与我试图做这件事的全职工作格格不入。

    所以看起来虚拟化已经过时了,但是在不同的方面,我想或者需要模拟一下在“干净”的Macintosh上安装和运行这个软件的感觉。人们通常是怎么做到的?买多台Macintosh用时光机?我是不是觉得这一切都错了,一切都正常?

    清楚

    • 我不是要在Windows机器上运行Mac OS X。我有一个Macintosh,我可以在苹果硬件上虚拟化MacOSX,我只是没有看到让非服务器版本这样做的途径。
    • 我知道Mac OS X 服务器 可以虚拟化,但这不是我想要的。
    • 我知道有一些未经批准/不受支持的方法可以让Mac OS X在虚拟化程序(如virtualbox)中运行,但出于法律原因,我对这些不感兴趣。
    • 我的问题不是“我该怎么做?”但更确切地说,“我在Windows上做的这件事在Macintosh上似乎是不可能的,所以人们做什么来实现我的目标呢?”
    4 回复  |  直到 15 年前
        1
  •  2
  •   Ukko    15 年前

    当我坐在这里,在我的工作机器上有许多不同版本的Windows虚拟机时,我从来没有在Mac上真正需要它。最大的原因是应用程序在Mac上捆绑部署的方式。理想情况下,安装是一个副本,卸载是将应用程序拖到垃圾箱中。在Windows上,应用程序之间的共享状态要比Mac上的大多数应用程序都多。现在,如果您正在编写设备驱动程序或VPN客户端,或者需要进入系统这些部分的东西,那么您就没有这种奢侈了。

    我真正觉得需要虚拟化的地方是,当我想针对不同版本的OS X,或者做某种回归检查,看看在X.Y.X版本下是否真的工作不同。

    那么我们如何实现你想要的,默认情况是不在乎,因为你没有同样的风险,因为应用程序包。或者,如果你愿意,那就买一堆外部硬盘驱动器来启动,并根据需要交换它们。(我只为两个版本的OSX做过一次,所以我不能说这真的是行业惯例。)

        2
  •  1
  •   Michael Stum    15 年前

    您不需要第二台Mac,只需在另一个分区或硬盘上安装第二台OS X即可。

        3
  •  0
  •   foobarfuzzbizz    15 年前

    这通常是你有一个“试验台”的目的。获取第二个Mac,镜像干净的安装,然后根据需要安装/重新镜像。

        4
  •  -1
  •   Community CDub    8 年前

    我是不是在想这些都错了? 一切正常吗?

    对我来说这不是一个很好的答案,但是 是的,是的! 实际上,没有任何框架是用户期望拥有的,而应用程序本身没有安装这些框架。

    为了更好地回答这个问题 当然可以在say vmware fusion下虚拟化OS X“客户机”。从我的答案到 older question :

    vmware fusion可以运行10.5/10.6客户机vms,但是您必须通过编辑操作系统安装光盘来欺骗它。

    此方法存在一些问题,如尝试此方法的人列举的(主要是由于缺乏3D加速):

    • DVD播放机不工作有错误(-70017)
    • 大多数屏幕保护程序不工作。
    • 前排加载到黑屏
    • QuickTime中的屏幕记录产生错误(Osstatus错误-108)
    • 虚拟化时,所有Mac操作系统中的声音都不起作用。
    • 系统探查器找不到有关系统组件的大量信息。
    • 虚拟环境下启动时间慢20秒

    根据您的测试要求,这些可能或可能不是您的交易破坏者。

    要让VMware认为客户机10.5或10.6光盘实际上是服务器,您必须为新的虚拟机编辑Fusion的基本映像:

    sudo bash
    cd "/Library/Application Support/VMware Fusion/isoimages"
    mkdir original
    mv darwin.iso tools-key.pub *.sig original
    sed "s/ServerVersion.plist/SystemVersion.plist/g" < original/darwin.iso > darwin.iso
    openssl genrsa -out tools-priv.pem 2048
    openssl rsa -in tools-priv.pem -pubout -out tools-key.pub
    openssl dgst -sha1 -sign tools-priv.pem < darwin.iso > darwin.iso.sig
    for A in *.iso ; do openssl dgst -sha1 -sign tools-priv.pem < $A > $A.sig ; done
    exit
    

    然后安装操作系统:

    如果您尝试安装,它将给出一个电子书错误,因此您需要按F8进入高级安装。然后在那里使用-v-安装,它应该安装。