方法一:
操作系统Ubuntu20.04
首先定位rosdep资源下载函数。从报错信息中得知,该函数名为download_rosdep_data,位于/usr/lib/python3/dist-packages/rosdep2/sources_list.py。我们修改这一函数,在try后面添加:
url="https://ghproxy.com/"+url
用同样的方法修改/usr/lib/python3/dist-packages/rosdistro/__init__.py里面的DEFAULT_INDEX_URL。
即将DEFAULT_INDEX_URL 进行如下替换:
DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
除此处外,下述文件中也含有github地址,分别是:
/usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py 36行
/usr/lib/python3/dist-packages/rosdep2/sources_list.py 72行
/usr/lib/python3/dist-packages/rosdep2/rep3.py 39行
/usr/lib/python3/dist-packages/rosdistro/manifest_provider/github.py 68行 119行
对于第五个地址[https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml]报错的问题, 在/usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 第204行添加如下代码
gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url
最后执行
rosdep update
即可
方法二:
git clone https://github.com/ros/rosdistro.git
git clone到本地,记住目录,例如我git clone 到了路径 /home/robot/rosdistro/
查找 文件/usr/lib/python2/dist-packages/rosdep2/rep3.py 中的raw.githubusercontent.com,将 https://raw.githubusercontent.com/ros/rosdistro/master 替换成 file://+第1步中的路径,比如我的是:将 原来文件中的 REP3_TARGETS_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml' 替换成 REP3_TARGETS_URL = 'file:///home/robot/rosdistro/releases/targets.yaml'
同第2步,查找文件/usr/lib/python2/dist-packages/rosdistro/init.py中的raw.githubusercontent.com,将 https://raw.githubusercontent.com/ros/rosdistro/master 替换成 file://+第1步中的路径,比如:将 原来文件中的 DEFAULT_INDEX_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'替换成 DEFAULT_INDEX_URL = 'file:///home/robot/rosdistro/index-v4.yaml'
sudo rosdep init 重新生成/etc/ros/rosdep/sources.list.d/20-default.list,将该文件中的所有https://raw.githubusercontent.com/ros/rosdistro/master 也替换成 file://+第1步中的路径,比如我修改后的文件:
# os-specific listings first
yaml file:///home/robot/rosdistro/rosdep/osx-homebrew.yaml osx
# generic
yaml file:///home/robot/rosdistro/rosdep/base.yaml
yaml file:///home/robot/rosdistro/rosdep/python.yaml
yaml file:///home/robot/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/robot/rosdistro/releases/fuerte.yaml fuerte
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
然后就可以顺畅的rosdep update了