这几天,同步问题一直在困扰着我,总是同步到99%的时候,报错。有时候是中途就停了。
用了以下解决办法:
1. 同步源代码困难(代理问题)。
症状:repo init
or repo sync
失败同 http 错误一起,通常 403 或 500。
原因:这些是相当一点可能的原因,最常见的 http 代理关系,处理大量数据传输困难。
修理:这不是一般的解决方法,用 python 2.7 和明确的用 repo sync -j1
已经据报告为一些用户改善这个情况。
2. 同步源树困难(DNS 问题)。
症状:当运行 repo sync
,这个过程失败和各个有关不承认主机名的错误。一个这样的错误是 <urlopen error [Errno -2] Name or service not known>
。
原因:一些 DNS 系统有很难复制大量查询参与到同步源树(可以是几百个请求在一个最差情况的场景)。
修理:手动解决有关的主机名,和本地硬编码这些结果。
你能解决它们用 nslookup
命令,将给你一个那些每个 IP 地址的数值(通常在”地址”部分”输出)。
$ nslookup googlesource.com $ nslookup android.googlesource.com
你能接着本地硬编码它们通过编辑 /etc/hosts
,并且添加两行到这个文件,形式:
aaa.bbb.ccc.ddd googlesource.com eee.fff.ggg.hhh android.googlesource.com
注意,这仅仅工作,只要服务器地址不改变,并且假如它们工作和你不能连接,你将不得不解决这些主机名从而再一次并且编辑 etc/hosts
。
3. 同步源树困难(TCP 问题)。
症状:repo sync
挂起当同步时,常常当它完成同步 99% 。
原因:一些网络环境的 TCP/IP 堆设置导致困难,例如 repo sync
不完成也不失败。
修理:在 linux 上,sysctl -w net.ipv4.tcp_window_scaling=0
。在 MacOS 上,禁用 rfc1323 扩展在网络设置。
发表回复