页次: 1
写在前面:因为实在不知道这个问题应该属于哪个板块,就放在《新手园地》了。如果不适合放在这里,请版主把它移到合适的板块,谢谢。
以下是问题:
其实这个问题已经出现几年了,最初的时候我并没有在意。因为我需要从github下载文件的唯一原因就是安装AUR上的软件,而这个软件的下载源是github。除此之外,我没有任何需要从github下载文件的理由。
当下载中断后,最终一般是会报编译/安装失败,我是很少仔细看报错信息,基本上也看不懂(无论从英语的角度还是从计算机的角度)。毕竟没有任何一个AUR上软件是我必需要装的,失败了的话,不装就得了。
但是最近一段时间我有点在意了,不知道是不是因为有更多的软件把代码托管在了github上,这样的失败逐渐频繁了。我开始去看报错信息了。然后我发现,报错信息几乎都是这个:
error: RPC 失败。curl 18 transfer closed with outstanding read data remaining
fatal: 远端意外挂断了
fatal: 过早的文件结束符(EOF)
fatal: index-pack 失败
有时候没有“error: RPC 失败。curl 18 transfer closed with outstanding read data remaining”这句。
然后我就去google了这个报错信息,找到三个(我会操作的)方法:
1、增大buffer大小
2、修改Lowspeed
3、将http(s)://改成git://
前两者我用的是git config --global 命令,执行后的生产的.gitcongfig文件如下
[https]
postbuffer = 5368709120
lowSpeedTime = 999999
lowSpeedLimit = 0
[http]
postbuffer = 5368709120
lowSpeedLimit = 0
lowSpeedTime = 999999
这里有个分支问题:我第一次用git config --global 命令时,在~/下生成了一个名为.gitconfig的配置文件,但是我再次使用git config --global 命令时,如果要设定的值在.gitconfig里已经有了,那么它就不会再改变了(比如上面已经有postbuffer = 5368709120,当我我再次:git config --global https.postbuffer 10000000后,.gitconfig里面仍然是postbuffer = 5368709120,而不会变成10000000)。我不知道这是否就是这样的?另外如果直接用文本编辑器修改.gitconfig文件里面的值,而不是通过git config命令,是否有效?
第三种我在pkgbuild里修改。
另外还有个是在git clone后增加--depth 1 参数,但是我不知道加在pkgbulid文件中的哪一句里,这里面没找到类似git clone的语句
这三种方法时而有效,时而无效。
后来有一次我发现好像我白天下载时成功率就高些,夜间下载就都失败,然后我以为是因为夜间睡觉了,电脑因长时间等待,会话被挂起了的原因。我又修改了电源和节能的相关设置。
还有一次我又发现在KDE下多次下载中断的某个文件在openbox下顺利下载成功,我就又切换到openbox下
…………
但是,逐渐地我发现,这都只是巧合而已,即使没有了.gitconfig文件,即使没有改成git://,即使在夜里,即使在KDE下,也有下载成功的时候,反之亦有下载中断失败的时候。
经过最近这大约4个多月的尝试,我只发现了一些与下载中断有一定相关性的问题,但并没有找到其中规律和解决办法,这些相关问题和下载中断之间的相关性如下:
1、文件包总大小。文件包越大,成功的概率越小
几MB或小于1MB的文件包,目前没有下载中断的情况;10几MB到几十MB的文件包,大约有50%~70%左右的概率中断;超过百MB的文件包,中断概率在90%以上。我有一个要下载的文件包,大约300多MB,我下载了大约100来次(每天尝试1-2次,用了2个多月),才侥幸成功了一次。
2、将http(s)://改成git://的方法成功率最高
本来下载会中断,但后来成功的文件包中,有大约一半是用的这个方法成功的。但其中也有几个文件包,修改后虽然下载成功了,但是编译失败,提示所下载的文件不是从指定位置下载的。
3、桌面环境
似乎在openbox下比在KDE下成功率高一些,但也没有明显的提高。
此外,如果不用yay,而是直接用git clone的话,结果差不多,只是如果增加了--depth 1 的参数,成功的概率就会变大,但这本质上还是减小了要下载的文件包大小。只不过用git clone下载下来的不能直接用,makepkg时也会提示所下载的文件不是从指定位置下载的。
最后一点,直接从github的页面上用浏览器下载,也一样是时常中断。中断的概率主要还是和文件包大小相关,如果使用浏览器下载,(对同一个文件包)当下载时显示软件大小,那么就可以下载成功;如果显示大小未知,则下载就会失败,而且不能断点再续。
实在是不知道哪里的问题,究竟该怎么解决。
Arch Linux的老小白
—“老”当总讲,就是一贯地卖年糕
—连驴打滚都没卖过
—没有
离线
你网不稳定,下着下着就断了。
只是匿名下载的话,可以试试七牛的这个反代: https://github.com.cnpmjs.org/
离线
遇到需要从github下载大文件或者clone比较大的仓库时,我一般手动用油猴脚本fastgithub提供的镜像站下载
离线
你网不稳定,下着下着就断了。
只是匿名下载的话,可以试试七牛的这个反代: https://github.com.cnpmjs.org/
感谢感谢!
另外再请教您两个问题:
1、用您说的这个反代,是需要手动修改pkgbuild文件,还是有可以统一设置的方法?
2、网不稳定,是因为github的问题(例如可能限速、被墙,或者单纯因为是国外网站),还是因为我的网络本身就不稳定。因为如果是后者的话我可考虑保修或投诉。
再次感谢!
Arch Linux的老小白
—“老”当总讲,就是一贯地卖年糕
—连驴打滚都没卖过
—没有
离线
遇到需要从github下载大文件或者clone比较大的仓库时,我一般手动用油猴脚本fastgithub提供的镜像站下载
谢谢。不过我只在从aur上安装或升级软件时才可能涉及到从github下载,至于前面提到的用网页下载只是针对这个问题做的试验。
Arch Linux的老小白
—“老”当总讲,就是一贯地卖年糕
—连驴打滚都没卖过
—没有
离线
涉及到这个的话,我一般用 proxychains-ng 代理
离线
感谢感谢!
另外再请教您两个问题:
1、用您说的这个反代,是需要手动修改pkgbuild文件,还是有可以统一设置的方法?
2、网不稳定,是因为github的问题(例如可能限速、被墙,或者单纯因为是国外网站),还是因为我的网络本身就不稳定。因为如果是后者的话我可考虑保修或投诉。再次感谢!
1. 手动改
2. 因为是国外网站。另外我有个 gh-check 脚本可以用于寻找你访问最快的那个 GitHub IP。(不过我这里也就网页访问比较好用,git clone 还是挺慢的。)
离线
freezai 说:感谢感谢!
另外再请教您两个问题:
1、用您说的这个反代,是需要手动修改pkgbuild文件,还是有可以统一设置的方法?
2、网不稳定,是因为github的问题(例如可能限速、被墙,或者单纯因为是国外网站),还是因为我的网络本身就不稳定。因为如果是后者的话我可考虑保修或投诉。再次感谢!
1. 手动改
2. 因为是国外网站。另外我有个 gh-check 脚本可以用于寻找你访问最快的那个 GitHub IP。(不过我这里也就网页访问比较好用,git clone 还是挺慢的。)
好的,明白了。多谢多谢!
Arch Linux的老小白
—“老”当总讲,就是一贯地卖年糕
—连驴打滚都没卖过
—没有
离线
主要还是网络问题,github是国外网站,国内访问回有这个问题,设置个代理科学一下就好了 git config --global http.proxy 'your proxy ip:port' 以后在clone项目就没有问题了
离线
页次: 1