操作系统

除了特殊情况下,本书的读者无需考虑操作系统的问题。

当你准备制作一个真正的安装包的时候,对于一个严肃的开发和测试者来说,操作系统测试环境的要求,一方面最好是纯净的,这样可以最大限度地测试软件安装后的完整性,避免因软件的外部依赖而产生错误;另一方面,有的时候也需要测试与其他软件相互配合和相互的兼容性,那么最好是只安装所需的软件的纯净环境。如果是要试错,那么可能尽量让最多的用户测试,是一个不错的办法。

复杂的情况一般都来自网络或多用户的情况。一般来说,安装包可能被运行在不同版本的操作系统,而有些系统特性随着操作系统版本而不同,这些因素可能需要建立不同macOS系统版本的测试环境。

比如系统完整性保护(System Integrity Protection, 简称SIP,有时也会被坊间称作rootless),在OS X 10.11 El Captain 及更新版本中使用,那么在安装时就尽量使用SIP准许用户使用的文件路径,比如/Library和/usr/local等。如果被安装软件无法满足SIP的要求而需要用户禁止SIP,那么安装包最好预先判断用户环境,比如使用下面的命令做出判断: $ if csrutil status | grep enabled; then echo Yes; else echo No; fi

安装包制作者可以选择或者安装后提醒用户关闭SIP,或者提示用户必选先关闭SIP后才能安装。

再比如,从macOS 10.13 High Sierra开始支持的APFS文件系统的情况下,如果我们希望在安装过程中判断目标系统的中分区和文件卷的情况,那么就需要使用下面三个命令,才能完全掌握有可能的亦或只有普通卷,亦或有核心存储,抑或是APFS的所有情况: $ diskutil list $ diskutil cs list $ diskutil apfs list

很多时候,软件的不同版本,特别是经过重大改版的软件,它们安装后的环境与前期版本有可能有很大差异,而且有时它们可以共生,有时又是排他的,那么就要考虑周全这些情况的不同组合,搭建测试环境。为了简化环境,有时可能需要强制使用一种或者两个版本。这种排他性可能体现在用户环境中的特殊数据库或资源中,一旦在一台Mac上升级了,在没有该版本的其它电脑上就有可能出现错误。

Mac操作系统可以被安装在虚拟机中,我们也可以用虚拟机搭建测试环境,不仅快速便捷,还可以利用虚拟机的快照(snapshot)功能,更容易实现系统状态的回滚,而且也可以方便的新建和复制给团队使用等。

目前最流行的有三个虚拟机软件:

  • Parallels的 Parallels Desktop for Mac,需付费

  • VMWare的Fusion for Mac,需付费

  • Oracle的Virtual Box,免费

众所周知,这些软件可以安装运行Windows虚拟机,其实同样可以运行Mac系统,在网上可以找到适合每种虚拟机软件的安装macOS的方法,有的是软件官方文档,也有第三方的变通方法,或者仅仅是注意事项。

在使用虚拟机的时候需要注意Mac操作系统的使用许可协议,相关文档可以询问苹果官方,或者参考苹果官网信息,比如中文的:法律信息及通知以及英文的Software License Agreements

Last updated