原文链接:https://blog.csdn.net/qq_41931091/article/details/107965229
一、问题分析
1、在执行sudo rosdep init前,需要已经安装了rosdep,否则会提示安装rosdep。
2、安装好rosdep后,执行sudo rosdep init,提示:
原因:默认的源不可用,需要添加新的地址。
方法:
打开以下文件,并在最后添加新的地址。
$ sudo gedit /etc/hosts
添加:
151.101.84.133 raw.githubusercontent.com
3、执行sudo rosdep init不再报错,执行rosdep update再次报错:
原因:
看ERROR是urlopen和ssl验证的问题。报错原因是python 升级到 2.7.9 之后引入了一个新特性,当使用urllib.urlopen打开一个 https 链接时,会验证一次 SSL 证书,而当目标网站使用的是自签名的证书时就会抛出一个 urllib2.URLError的错误消息。
既然前面尝试了很多办法都没法解决SSL验证问题,那只能想办法在执行rosdep update时尝试定位urllib.urlopen()函数并规避掉SSL验证。
找到urlopen()之后,如果参考链接里的解决方案,需要修改所有调用的14个地方,太复杂。如果我们可以在rosdep浅入口处设置urlopen()全局属性,取消SSL验证,那是不是可以一下解决问题?
因此,在/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py中顶部直接插入两行代码取消SSL验证:
$ sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
插入:
# Change
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
再次执行rosdep update,无报错。