由于近期国内Github Raw的可用IP越来越少,通过修改hosts文件解决rosdep update超时问题的方法已经不太好用,本文通过修改rosdep源码中下载资源的函数来解决这一问题。
网站/支持github的资源代理,非常好用,我们将用此代理加速rosdep对Github Raw的访问,进而解决rosdep update超时问题。
首先定位rosdep资源下载函数。从报错信息中得知,该函数名为download_rosdep_data,位于/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py。我们修改这一函数,添加:
url="/"+url
应用ghproxy的代理服务。
用同样的方法修改/usr/lib/python2.7/dist-packages/rosdistro/__init__.py里面的DEFAULT_INDEX_URL(感谢评论区@p4227117的补充)。
即将DEFAULT_INDEX_URL 进行如下替换:
DEFAULT_INDEX_URL = '//ros/rosdistro/master/index-v4.yaml'
除此处外,下述文件中也含有github地址,分别是:
/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.py39行/usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py 68行 119行
均可通过在地址前添加/前缀来应用代理服务。
.7.1补充:
对于第五个地址[/ros/rosdistro/master/releases/fuerte.yaml]报错的问题,请参考评论区@zgkjddk的方法:
在/usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 第204行添加如下代码
gbpdistro_url = "/" + gbpdistro_url
再次尝试执行rosdep update,问题解决。