由于我国的网络的原因,在访问谷歌等一些国外网络资源时经常会遇到被拦截的情况,导致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失败的一个解决方案的更多相关文章

  1. Nginx 做代理服务器时浏览器加载大文件失败 ERR_CONTENT_LENGTH_MISMATCH 的解决方案

    此文章仅作为本人的笔记,文章转载自  http://blog.csdn.net/defonds/article/details/46042809 Nginx 做反向代理,后端是 tomcat,chro ...

  2. 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 ...

  3. yii2.0高级框架配置时打开init.bat秒退的解决方法 (两种方法)

    第一种: 这几天刚接触到yii2.0框架,在配置advanced版本时运行init.bat初始化文件时老是闪退: 用cmd运行该文件时显示:The OpenSSL PHP extension is r ...

  4. Ant学习-002-ant 执行 TestNG 测试用例时 [testng] java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException 解决方案

    上篇文章中概述了 Ant windows 环境的基本配置,此文讲述在初次使用的过程中遇到的问题. 今天通过 ant 执行 TestNG 测试用例时,执行报错,相应的错误信息如下所示: Buildfil ...

  5. 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二)

    前言 文章 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 中,已经完成对 gulp 的安装,由于是window环境,文中特意提到了可以通过安装 gitbash 来代替 ...

  6. 当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。

    当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式.比如 select * from T_Employee where FNumber not in ( select top 5*  ...

  7. ASP.NET连接数据库时,提示“用户 'sa' 登录失败原因: 未与信任 SQL Server 连接相关联

    用ASP.NET连接数据库时,提示"用户 'sa' 登录失败.原因: 未与信任 SQL Server 连接相关联.".解决方法:首先检查是不是web.config文件内的用户名密码 ...

  8. idea在maven打包时运行Test测试, 导致打包失败, 乱七八糟的错误

    在maven打包时运行Test测试, 导致打包失败, 乱七八糟的错误 在maven projects中图标toggle'skip Tests' Mode //宏杰帮助 网上案例:https://blo ...

  9. idea 创建运行web项目时,报错: Can not issue executeUpdate() for SELECTs解决方案

    最近在做一个Web课程设计的时候遇到了如下的问题. java.sql.SQLException: java.lang.RuntimeException: java.sql.SQLException: ...

随机推荐

  1. 24.Java基础_IDEA类快捷键_Alt+insert

    这个IDEA我真的爱了,Alt+insert可以定制生成类的各项基本方法 Alt+insert,会打开下面这个界面,选择需要的类方法,按回车 选择该方法下的参数设置,可以使用Ctrl+A全部选中 自动 ...

  2. 【洛谷P4148】简单题(kd-tree)

    传送门 题意: 给出一个\(n*n\)的棋盘,现在有两种操作:一种是某个格子里的数字加上\(A\),另一种是询问矩阵和. 空间限制:\(20MB\),强制在线. 思路: 直接\(kd-tree\)来搞 ...

  3. 201871010111-刘佳华《面向对象程序设计(java)》第十二周学习总结

    201871010111-刘佳华<面向对象程序设计(java)>第十二周学习总结 实验十   集合与GUI初步 实验时间 2019-11-14 第一部分:基础知识总结 第九章知识总结 1. ...

  4. Redis缓存策略

    常用策略有“求留余数法”和“一致性HASH算法” redis存储的是key,value键值对 一.求留余数法 使用HASH表数据长度对HASHCODE求余数,余数作为索引,使用该余数,直接设置或访问缓 ...

  5. BZOJ2733/LG3324 「HNOI2014」永无乡 权值线段树合并

    问题描述 BZOJ2733 LG3224 题解 对于每个结点建立一棵权值线段树. 查询操作就去查询第 \(k\) 大,合并操作就合并两颗权值线段树. 并查集维护连通性. 同时 STO hkk,zcr, ...

  6. luoguP3346 [ZJOI2015]诸神眷顾的幻想乡

    题意 学习了广义后缀自动机. 广义后缀自动机与普通后缀自动机的区别在于它是对多个串建的,于是可以处理多个串. 广义后缀自动机和普通后缀自动机的区别在于两个特判,可以见这篇题解 对于这题,因为叶子数量小 ...

  7. NOIP模拟赛three(3)

    题目描述 Description 很久很久以前,有两个长度为 \(n\) 的排列 \(a\) 和 \(b\) 以及一个长度为 \(n\) 的由 \(1\) 和\(2\) 组成的序列 c.对于 \(1& ...

  8. matplotlib动态绘图

    目录 package Process 解决中文乱码问题 simple_plot() scatter_plot() three_dimension_scatter() Jupyter notebook ...

  9. 动手学深度学习17-kaggle竞赛实践小项目房价预测

    kaggle竞赛 获取和读取数据集 数据预处理 找出所有数值型的特征,然后标准化 处理离散值特征 转化为DNArray后续训练 训练模型 k折交叉验证 预测样本,并提交结果 kaggle竞赛 本节将动 ...

  10. Python连载19-装饰器

    一.检视一个函数相同的另一种方法 利用属性:函数._name def hello(): print("我是一个测试程序") f = hello print(f.__name__) ...