Mac的更新,经常出错。出错的原因也非常简单,cdn同步错误。基本上每次Mac OS的版本更新都会遇到这种神奇的事情。
cdn,应该叫内容分发网络,是一种帮助每一个用户就近找到自己所需数据copy,从而提高获取所需数据速度的网络服务。最早用于互联网视频服务,比如youtube。现在,网站上的各种静态资源(下载文件,包括图片在内的多媒体信息,js和css文件等),都会存储在cdn网络中,以使得用户获取这些信息的速度得以最大化的提高。
cdn上的内容,是用过多种方式进行更新和同步的,有些巨大的文件是通过有计划的复制同步来实现更新的,一些经常发生变化的小文件,则是通过反向映射的方式来实现更新的。先说反向映射,通常是用户在访问某个特定网页的时候,cdn代码根据用户所在区域,自动将特定资源的url修改为特定区域的cdn服务器url。当该区域cdn服务器第一次接收到这个url的请求的时候,会发现所请求的文件,并不存在,于是会到原服务器上面去查找,并复制这个文件到该区域的服务器上,以后再有用户在相同区域访问这个文件的时候,就会直接就进获得服务了。这种方式的优点是配置简单,不需要编写复杂的同步、更新与分发代码。缺点则是第一次在特定区域访问该资源的用户,相应会变慢。苹果的更新包,通常不应该采用这种复制方式,因为文件非常巨大(通常超过1G),文件一旦产生,基本不会发生变化。所以这种文件通常是通过特定的更新程序来分发到不同区域的cdn服务器上的。
cdn的基本工作原理解释了,苹果到底是怎么出错的呢。这种更新包,经常会有非常复杂的版本。也就是同时存在应对不同需求,不同状态的很多更新包版面。这些版本在复制的过程中,由于某些特定标示的混淆,出现了复制错误。而且,有些时候,更新系统还想进行差异更新,也就是只下载本机上不存在的部分,而不是完整的更新包,这虽然能够极大的网络请求的数据量,但对cdn服务的复杂度要求就有极大的提升。总之苹果在向cdn复制更新包的时候,出现了版本混淆,于是就会发生某些人下载了更新包,但无法进行更新的情况。
我本人的两台电脑,在家里的,直接就更新成功了。在办公室的,反复下载了很多次,每次下载结束之后,系统都拒绝更新,要求重新下载。这也是苹果比较笨的一个地方。每次下载了更新包之后,苹果会进行校验,如果发现校验错误,就会重新下载。但是在这个过程中,苹果从来不认为可能是自己在什么地方出错了,或者是更新包中某些特定的部分,存在错误。苹果只是很简单的相信,这是用户在下载过程中,出现的某些个别问题,只要重新再下一次,就没问题了。于是我昨天下载了十几次之后,终于放弃了。
遇到这种问题的解决方法其实也不复杂,上网搜索,或者给苹果客服打电话,他们会将正确的,完整的安装包地址直接发给用户。下载完整安装包,然后直接安装就好了。本文开头,就是本次更新的安装包链接。当然,还有一种更简单的处理方法,那就是等上一两周之后再更新,苹果通常会在一两周之后发现问题的存在,然后再同步那些存在错误的区域cdn服务器。这种问题通常只能困扰我这种每次抢在第一时间更新系统的人。
啰嗦了半天,如果有像我昨天一样更新了半天都没有成功的强迫症患者,文章的开头有你们需要的链接。
Both comments and pings are currently closed.