转载

使用代理同步谷歌项目时出现文件下载失败

在按官方文档使用 gclient sync 命令同步谷歌v8或Chromium项目时,最后总是会出现文件下载失败的报错:

Failed to fetch file gs://chromium-gn/a68b194afb05d6a6357cf2e2464136ed7723c305 for src/buildtools/mac/gn. ... Error: Command 'download_from_google_storage --no_resume --platform=darwin --no_auth --bucket chromium-gn -s src/buildtools/mac/gn.sha1' returned non-zero exit status ... 

搜索了一下午才找到解决方案,是翻墙代理的问题, gclient sync 里的某些子命令似乎在代理环境下无法正确连接谷歌服务器,但是不上代理压根连谷歌都连接不上。这个问题如果你上谷歌官方issue和论坛里去找几乎找不到正确解决方案,因为他们大部分人不需要翻墙,在天朝写个代码真不容易。

这个问题不知道谷歌会不会修好,如果一直没修自己手动也可以解决。本质上只是谷歌自己的命令行工具无法下载,但是你通过浏览器或者其他命令行工具是能下载文件的。以上面的报错为例,命令行需要把这个文件:

gs://chromium-gn/a68b194afb05d6a6357cf2e2464136ed7723c305 

下载到这里并命名为 gn

src/buildtools/mac/gn 

我们只需要 gs:// 替换为 https://storage.googleapis.com/ 就可以直接在浏览器下载了。前提当然是你还开着翻墙代理。所以任务就变成了下载下面这个地址的文件到刚刚那个目录。

https://storage.googleapis.com/chromium-gn/a68b194afb05d6a6357cf2e2464136ed7723c305 

你可以一个个用浏览器下载,也可以用命令行工具如 wget 去下载:

wget --no-check-certificate https://storage.googleapis.com/chromium-gn/a68b194afb05d6a6357cf2e2464136ed7723c305 -O src/buildtools/mac/gn 

可以写个工具脚本,一旦遇到 download_from_google_storage 错误的时候就执行一次手动下载,直到再次执行 gclient sync 不再报错为止,问题就解决了。

原文  http://www.idom.me/articles/843.html
正文到此结束
Loading...