1、安装 rosdep
$ sudo apt install python-rosdep
2、初始化 rosdep
$ sudo rosdep init
这里会报错:
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.
是的,我们被墙了。下面开始绕墙。
3.1、解决方法一:修改 Host
1、通过 https://www.ipaddress.com/,我们查找 raw.githubusercontent.com 服务器对应的 IP 地址。得到概括信息为:
得到其 IP 信息:
2、将 IP 和 服务器地址的信息对,添加到 /etc/hosts 文件中。
3、好了,重新执行 rosdep 的初始化和更新
$ sudo rosdep init
$ rosdep update
修改 hosts 文件的解决方法,操作起来比较简单,可以优先尝试。
如果解决不了问题,可以尝试下面的 “解决方法二”。
3.2、解决方法二:代理网站
网站 GitHub Proxy 代理加速 支持 github 的资源代理。
我们要做的是,基于此代理,修改 rosdep 所涉及的几个脚本文件。
修改方法是,将 “GitHub Proxy 代理加速” 添加到相应的 url 的前面,
即 url = "GitHub Proxy 代理加速" + url
1、文件 /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
在 311 行的函数 download_rosdep_data 中,插入如下行
url = "https://ghproxy.com/" + url
2、文件 /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
修改 68 行为:
DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
3、文件 /usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py
修改 68 行如下:
url = 'https://ghproxy.com/https://raw.githubusercontent.com/%s/%s/package.xml' % (path, release_tag)
修改 119 行如下:
url = 'https://ghproxy.com/https://raw.githubusercontent.com/%s/%s/%s' % \
4、文件 /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
修改 39 行如下:
REP3_TARGETS_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml'
5、文件 /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
修改第 72 行如下:
DEFAULT_SOURCES_LIST_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list'
6、文件 /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
修改 36 行如下:
FUERTE_GBPDISTRO_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/' \
在 204 行,插入如下:
gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url
7、好了,重新执行 rosdep 的初始化和更新
$ sudo rosdep init
$ rosdep update
由于 "https://ghproxy.com/" 不甚稳定,如果命令执行失败,可以换个时间段多尝试几次。