rosdep update 超时失败2021最新解决方法

写在前面

本文转载自
[1] 马赫_WGH. rosdep update 超时失败2021最新解决方法 [EB/OL]. https://blog.csdn.net/Kenny_GuanHua/article/details/116845781, 2021-05-15/2021-08-04.

一、关于 rosdep

安装ros的最后一步是rosdep init和rosdep update,rosdep是解决ros包依赖问题的一个工具。

rosdep init会从ros官方服务器上下载一个“20-default.list”文件,放在“/etc/ros/rosdep/sources.list.d/”路径下;打开“20-default.list”发现里边是一些yaml文件的网址,这些yaml文件里保存着一些ros工具或者常见ros包的依赖关系,也即:这些ros工具或者ros包依赖于哪些其它ros包。当你执行rosdep update,rosdep会尝试访问yaml文件网址,把yaml里的信息转存到本地,这样当你配置上述ros工具或者ros包时,ros会按照依赖关系自动把所需的依赖一并下载。这也是为什么一些人会认为rosdep失败也不影响ros使用,因为只有当你下载相关包时才会用到rosdep。

不难发现,rosdep init和rosdep update都需要访问境外服务器,这就导致国内用户rosdep相关操作经常失败。

二、常规解决方法

常规的方法是修改“/etc/hosts”文件,把“raw.githubusercontent.com”服务器的ip地址注册到里边,之前的话,通过此方法基本能解决rosdep问题,基本百试百灵。“raw.githubusercontent.com”的服务器ip可能会变化,大家可以通过 https://www.ipaddress.com 这个网站来查询当前的ip。
在这里插入图片描述

其它常见的解决方法还有:

  1. 使用手机热点联网,多试几次;

  2. 把“20-default.list”文件中所有yaml链接里的“raw.githubusercontent.com”替换为“raw.github.com”;

  3. 修改“/etc/resolv.conf”文件,添加谷歌的域名服务器;

nameserver 8.8.8.8 #google域名服务器
nameserver 8.8.4.4 #google域名服务器

根本上来讲,所有的方法都是为了能够让本机顺利访问yaml文件网址。

三、2021最新解决方法

但近期,通过修改hosts文件解决rosdep update失败的方法也不太好用了,成功几率很低。

参考 leida_wt 的方法,网站https://ghproxy.com/支持github的资源代理,非常好用,我们将用此代理加速rosdep对Github的访问,进而解决rosdep update失败问题。

我们要做的,是在rosdep的若干个脚本文件中,把 https://ghproxy.com/ 添加到相应URL前面即可。

1.首先 修改rosdep下载资源的脚本文件:/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py,把以下行添加到脚本中的download_rosdep_data()函数中,以应用代理服务:

url="https://ghproxy.com/"+url

在这里插入图片描述2.然后,用同样的方法修改/usr/lib/python2.7/dist-packages/rosdistro/init.py里面的DEFAULT_INDEX_URL参数,如下:

DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'

3.接着,以下4个文件中也使用了“raw.githubusercontent.com”网址,同样的方法把“https://ghproxy.com/”添加到网址前:

/usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 36行
/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py 72行
/usr/lib/python2.7/dist-packages/rosdep2/rep3.py	39行
/usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py 68119

4.最后,在 /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 的第204行添加如下代码:

gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url

在这里插入图片描述大功告成,现在你可以愉快地执行 rosdep update 啦!预祝一把过。

参考链接:
[1] 马赫_WGH. rosdep update 超时失败2021最新解决方法 [EB/OL]. https://blog.csdn.net/Kenny_GuanHua/article/details/116845781, 2021-05-15/2021-08-04.

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值