关于使用repo时repo init和repo sync失败的一个解决方案
由于我国的网络的原因,在访问谷歌等一些国外网络资源时经常会遇到被拦截的情况,导致repo等一些代码管理工具拉取代码网络受限受阻,下面提供一个可以参考的简单解决方案。
1、repo init时的遇到fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle问题
先尝试关闭一下防火墙,如果还是不行,在进行尝试下面的方法。
方法1:
获取镜像:
1 mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
方法2:
先执行下面的命令单独克隆repo,然后将git-repo目录里面的repo文件复制到bin目录,在同步源码的工作目录新建.repo文件夹,把git-repo重命名为repo复制到.repo目录下,然后再重新执行repo init.
git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo
2、repo sync同步拉取代码时,经常会出现卡住或者失败的情况
解决方法1:修改dns为google提供的8.8.8.8的dns服务器。
ubuntu下修改方法如下:
1)编辑 /etc/resolvconf/resolv.conf.d/base 文件(文件默认是空的),在里面添加下面两行代码
nameserver 8.8.8.8
nameserver 8.8.4.4
2)执行 resolvconf -u命令,然后使用命令 cat /etc/resolv.conf查看dns配置文件如果发现已经添加了新加的两行dns server就可以了。
解决方法2:添加repo sync失败后自动重新执行的脚本
如果修改完dns服务后依然会有repo sync的情况,就只能通过持续执行repo sync命令的方式来解决了。
1)获取网络检测工具ifstat
由于repo sync在执行时被卡住后,网卡的流入流量会变小(在没有其他需要下载或上网的进程执行的情况下),所以可以考虑通过检测网卡流入流量的变小情况来判断repo sync执行卡住,进行重新执行(由于repo sync支持断点续传)。
所以先要安装网络检测工具ifstat,ubuntu获取方法为sudo apt-get install ifstat
2)运行重复执行脚本
将如下脚本代码保存为.sh后缀的shell文件后,执行脚本,如果使用xshell连接的虚拟机或服务器可以考虑用&的方式在后台运行(如果在windows复制网页的shell代码,最好用notepad等编辑工具转换为Unix文件的utf-8编码格式,否则可能会导致执行失败)。
下面的脚本也有一些问题,没办法判断repo sync执行是否完成了,即使执行完成了还是会重新执行,不过不影响代码拉取成功,如果有更好的解决方案欢迎和我一起讨论。
#!/bin/bash #杀掉repo sync进程
kill_reposync() {
PID=`ps aux |grep python|grep [r]epo |awk '{print $2}'`
[[ -n $PID ]] && kill $PID
} #启动reposync进程
start_reposync() {
repo sync &
} #重启reposync进程
restart_sync() {
kill_reposync
start_reposync
} #网络检测相关阈值
th_net_value="" #实际检测,repo sync卡住时,网卡入口数据小于10
th_retry_times= #低于网络检测阈值次数限制
((count_low=)) restart_sync while [[ ]]; do
# 用ifstat检测网速
cur_speed=`ifstat | tail -n | awk '{print $1}'` result=$(echo "$cur_speed < $th_net_value" | bc)
if [[ $result == "" ]]; then
((count_low++))
else
((count_low=))
fi
if ((count_low > th_retry_times)); then
((count_low=))
echo "restart repo sync"
restart_sync
fi
done
关于使用repo时repo init和repo sync失败的一个解决方案的更多相关文章
- Nginx 做代理服务器时浏览器加载大文件失败 ERR_CONTENT_LENGTH_MISMATCH 的解决方案
此文章仅作为本人的笔记,文章转载自 http://blog.csdn.net/defonds/article/details/46042809 Nginx 做反向代理,后端是 tomcat,chro ...
- spark mllib配置pom.xml错误 Multiple markers at this line Could not transfer artifact net.sf.opencsv:opencsv:jar:2.3 from/to central (https://repo.maven.apache.org/maven2): repo.maven.apache.org
刚刚spark mllib,在maven repository网站http://mvnrepository.com/中查询mllib后得到相关库的最新dependence为: <dependen ...
- yii2.0高级框架配置时打开init.bat秒退的解决方法 (两种方法)
第一种: 这几天刚接触到yii2.0框架,在配置advanced版本时运行init.bat初始化文件时老是闪退: 用cmd运行该文件时显示:The OpenSSL PHP extension is r ...
- Ant学习-002-ant 执行 TestNG 测试用例时 [testng] java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException 解决方案
上篇文章中概述了 Ant windows 环境的基本配置,此文讲述在初次使用的过程中遇到的问题. 今天通过 ant 执行 TestNG 测试用例时,执行报错,相应的错误信息如下所示: Buildfil ...
- 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二)
前言 文章 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 中,已经完成对 gulp 的安装,由于是window环境,文中特意提到了可以通过安装 gitbash 来代替 ...
- 当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。
当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式.比如 select * from T_Employee where FNumber not in ( select top 5* ...
- ASP.NET连接数据库时,提示“用户 'sa' 登录失败原因: 未与信任 SQL Server 连接相关联
用ASP.NET连接数据库时,提示"用户 'sa' 登录失败.原因: 未与信任 SQL Server 连接相关联.".解决方法:首先检查是不是web.config文件内的用户名密码 ...
- idea在maven打包时运行Test测试, 导致打包失败, 乱七八糟的错误
在maven打包时运行Test测试, 导致打包失败, 乱七八糟的错误 在maven projects中图标toggle'skip Tests' Mode //宏杰帮助 网上案例:https://blo ...
- idea 创建运行web项目时,报错: Can not issue executeUpdate() for SELECTs解决方案
最近在做一个Web课程设计的时候遇到了如下的问题. java.sql.SQLException: java.lang.RuntimeException: java.sql.SQLException: ...
随机推荐
- 十一,专著研读(CART算法)
十一,专著研读(CART算法) CART称为分类回归树,既能用于分类也能用于回归.使用二元切分方法处理连续型变量,给定特定值,如果特征值大于给定值就走左子树,否则走右子树. CART算法步骤 决策树生 ...
- zz高精地图和定位在自动驾驶的应用
本次分享聚焦于高精地图在自动驾驶中的应用,主要分为以下两部分: 1. 高精地图 High Definition Map 拓扑地图 Topological Map / Road Graph 3D栅格地图 ...
- leetcode279. 完全平方数
给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示例 1: 输入: n = 12输出: 3 解释: 12 = ...
- unique_ptr的实现原理
在C++11中有两个智能指针类型来管理动态对象,share_ptr允许多个指针指向同一个对象,unique_ptr则“独占”所指对象. 我们知道指针或引用在离开作用域时是不会进行析构的,但是类在离开作 ...
- TestNg之XMl形式实现多线程测试
为什么要使用多线程测试? 在实际测试中,为了节省测试时间,提高测试效率,在实际测试场景中经常会采用多线程的方式去执行,比如爬虫爬数据,多浏览器并行测试. 关于多线程并行测试 TestNG中实现多线程并 ...
- Vue使用小结
公司新项目使用Asp.Net Core+Vue组合来做,这里总结下对于Vue的认识 为什么选择Vue 主要基于以下几点选择Vue而不是jQuery.React等框架 双向绑定相比于jQuery减少了许 ...
- Prometheus 监控K8S Node监控
Prometheus 监控K8S Node监控 Prometheus社区提供的NodeExporter项目可以对主机的关键度量指标进行监控,通过Kubernetes的DeamonSet可以在各个主机节 ...
- 由OSS AccessKey泄露引发的思考
什么是OSS? 对象存储服务(Object Storage Service,OSS)是一种海量.安全.低成本.高可靠的云存储服务,适合存放任意类型的文件.容量和处理能力弹性扩展,多种存储类型供选择,全 ...
- 【UOJ#49】【UR #3】轴仓库
[UOJ#49][UR #3]轴仓库 题面 UOJ 题解 不难发现一定是每次找到离当前位置最近的一个箱子,然后把它搬过来. 那么如果我们能够确定起始位置,我们就可以二分从两侧多少距离搬箱子,判断一下时 ...
- [Flutter] Windows桌面程序开发
在今年5月的谷歌I/O 2019大会时, 谷歌就宣布了flutter已经支持全平台开发, 包括 android, ios, mac, linux, windows, web 等 . Flutter桌面 ...