在安装ros的过程中,rosdep init
失败是一个非常有名的问题,我们会收到website may be down
的提示。
作者来来回回安装了3次ros了,每次都要在rosdep init
这一步卡很久,虽然作者并不懂这方面的技术,但还是决定将自己尝试成功的方法记录下来,下面我也会注明方法的来源。
第一次安装ros时,尝试过同步时间和换源,但是都没有解决问题。
stackoverflow上一个叫Xman的用户建议可以将网络切换至手机热点再进行尝试,我将网络从路由器切换至手机热点之后,便解决了这个问题。
但是后面两次安装,这种方法都失效了,所以这是一个不稳定的方法,不过最简单,可以先行尝试,如果解决了就皆大欢喜。
第二次安装ros我用了proxychains代理工具,将流量请求从虚拟机转发到主机,再从主机转发到代理服务器,成功解决了问题。
但后来我才知道原来走代理也不是完美的解决方案,可能会失败。
我曾经一度以为website may be down
的根本原因就是无法访问外网,直到我第三次安装ros时,明明已经越过长城,但是还是无法init。
经过一番折腾,我找到了第三种解决方法。方法来自知乎用户liangxiao05和Evan。这种方法的原理就是手动下载网站上的内容,然后通过修改nameserver和证书跳过检查。
首先我们在/etc/ros/rosdep/sources.list.d
目录下新建一个名叫20-default.list
的文件。终端命令为
mkdir -p /etc/ros/rosdep/sources.list.d
cd /etc/ros/rosdep/sources.list.d
touch 20-default.list
接下来我们将网站上的内容手动复制到20-default.list
文件中。文件的内容在下面。
# os-specific listings first
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx
# generic
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
终端命令为
sudo nano /etc/ros/rosdep/sources.list.d/20-default.list
接下来我们在/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
文件的最底部插入这两句话
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
修改文件命令同上。
最后我们要修改nameserver,将/etc/resolv.conf
原有的nameserver那一行注释掉,并添加以下两行
nameserver 8.8.8.8
nameserver 8.8.4.4
至此我们就把rosdep init
的工作手动做完了,我们只需要再进行下一步rosdep update
就可以了。
作者并没有尝试过这种方法!
此方法来自csdn用户 _风起了_ ,因为大家反馈效果似乎不错,就分享给大家,文章链接在参考文献中可以找到。
方法就是在/etc/hosts
文件的末尾添加151.101.84.133 raw.githubusercontent.com
这样一句话,方法非常简洁。
方法一
方法三
方法四