由于我国的网络的原因,在访问谷歌等一些国外网络资源时经常会遇到被拦截的情况,导致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. 使用flask搭建微信公众号:完成token的验证

    上一篇文章讨论了官方给的例子验证token失败的解决方法:微信公众号token验证失败 想了一下,还是决定不适用web.py这个框架.因为搜了一下他的中文文档不多,学起来可能会有点麻烦.而且看着他没有 ...

  2. Jmeter之BeanShell

    在Jmeter中各种分类组件中都有相应的BeanShell组件,这里简单的说明一下Beanshell的使用. 一.概念 BeanShell是一种符合Java语法的脚本语言,也有自己的一些特定语法 二. ...

  3. 矩阵快速幂之Kiki & Little Kiki 2

    题意是:给出一串01串,每一秒,每个位置得灯会根据左边那个灯得状态进行改变,(第一个得左边为最后一个)如果左边为1,那么自己就会改变状态,左边为0则不用,问n秒改01串的状态 ///// 首先,我们发 ...

  4. [C12] 大规模机器学习(Large Scale Machine Learning)

    大规模机器学习(Large Scale Machine Learning) 大型数据集的学习(Learning With Large Datasets) 如果你回顾一下最近5年或10年的机器学习历史. ...

  5. [C10] 异常检测(Anomaly Detection)

    异常检测(Anomaly Detection) 问题的动机 (Problem Motivation) 异常检测(Anomaly detection)问题是机器学习算法中的一个常见应用.这种算法的有趣之 ...

  6. [C6] Andrew Ng - Convolutional Neural Networks

    About this Course This course will teach you how to build convolutional neural networks and apply it ...

  7. CentOS7 中创建 Django 项目

    1. (新建文件夹用于存放项目)进入指定文件夹,创建Django项目 django-admin.py startproject mysite mysite 为项目名称 2. 进入项目文件夹,新建app ...

  8. wafer2的几个简单示例

    如何快速新建路由 服务端 Demo 采用 Koa.js 框架编写,腾讯云基于 Koa 对上层进行一个简单的封装,方便你快速的添加新建路由 只需要在 controllers 目录下新建一个文件,例如为  ...

  9. 用arthas查看JVM已加载的类及方法信息

    1.sc:“Search-Class” 的简写,这个命令能搜索出所有已经加载到 JVM 中的 Class 信息,这个命令支持的参数有 [d].[E].[f] 和 [x:]. [d] 输出当前类的详细信 ...

  10. java优化细节记录

    此处是为了记录一些优化细节,从网上收集而来,仅供后续代码开发参考使用,如发现更好的,会不断完善 首先确认代码优化的目标是: 减小代码的体积 提高代码运行的效率 代码优化细节 1.尽量指定类.方法的fi ...