sudo rosdep init ERROR: cannot download default sources list from:【closed】

解决方案:终极解决方案来啦!!!

首先要感谢 weixin_42817528,是他的留言让这个在我心中一直悬而未决的问题终于有了近完美的解答!然后,就是要感谢蓝鲸ROS机器人论坛的网友xiaoqiang。

为了方便大家,现将解决方案移于此。

#打开hosts文件
sudo gedit /etc/hosts
#在文件末尾添加
151.101.84.133  raw.githubusercontent.com
#保存后退出再尝试

好完美啊!!!

以下内容已经没有价值了,不用往下看。但还是不舍得删,留个足迹吧!


系统:ubuntu 16.04 + ROS kinetic
google chrome 与终端都可以xxxx

1. 问题

按照 ros/installation在ubuntu 16.04上安装ros kinetic,在执行以下命令时

$ sudo rosdep init
$ rosdep update

出现以下错误:

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.

简要分析:我将https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list复制到浏览器地址栏打开,能够进入。开始我只能浏览器访问xx,终端ping不通xx。所以,开始我认为问题出现在终端不能xxxx上。后来,终于使终端能够访问谷歌,发现问题仍没有解决。于是总结,我的问题并不是xxxx引起的。注意后面解决方案三需要xxxx。

2. 解决

将问题放到网上搜了一下,相关的社区给出一些解决方法,可是这些方法对我无效。本篇将所有别人已经说了可行的解决方案与本人自己解决的方案都列出。该问题虽然现象一样,但是内部原因有很多种,大家可以按照顺序一个个试。希望有一个有用!

2.1 解决方案一

执行以下命令后再运行sudo rosdep init

sudo apt-get install ca-certificates

2.2 解决方案二

执行以下命令

sudo c_rehash /etc/ssl/certs
sudo -E rosdep init

2.3 解决方案三

这是我自己摸索出来的解决方法,实在不行可以一试!
首先保证你的浏览器可以xxxx,然后打开以下地址
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list

打开的页面:
sudo rosdep init ERROR: cannot download default sources list from:【closed】_第1张图片
在本地新建对应目录/etc/ros/rosdep/sources.list.d

$ sudo mkdir -p /etc/ros/rosdep/sources.list.d

并定位到该目录:

$ cd /etc/ros/rosdep/sources.list.d

新建文件20-default.list:

sudo gedit 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

并将所有raw.githubusercontent.com改为raw.github.com,得到如下最终文档:

# os-specific listings first
yaml https://raw.github.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx

# generic
yaml https://raw.github.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.github.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.github.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.github.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

保存,关闭文件。
在终端运行:

rosdep update

得到以下信息,成功!!!
sudo rosdep init ERROR: cannot download default sources list from:【closed】_第2张图片

我的方式,等于人为的将文件放置到本地对应位置,这一系列过程替代sudo rosdep init

附加步骤:
如果经过以上过程仍不成功,更换ubuntu与ros的源:

  • 更换ubuntu的源为国内镜像源(更换操作请点击链接)。
  • 更换ros的源为国内镜像源(执行以下命令即可)
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

然后

sudo apt-get update
rosdep update

2.4 解决方案四:卸载重装OLO

部分参考ubuntu16.04 运行rosdep init 返回ERROR:cannot download default sources list from:

这个问题的产生,根本问题出在源。
1)如果电脑无法xxxx,那么在安装ros前,老老实实地先把源改成国内镜像源,然后再进行安装。如果出错,可以试试方法一或二。
2)如果可以xxxx,那么可以不改源,但是在安装ros过程中一直挂着xxx,然后继续后面的安装步骤,万一出错,可以试试本博客的方法三。

下面给出你可能需要的几个命令,如果你网络流量够的话,我建议可以卸载重装,多尝试几次;如果流量不够,我建议还是先按照本文解决方法走一遍.等下次系统被搞废后,重装ros前,根据自己实际情况(有没有xxxx),决定是不是需要将源改成国内镜像源。下面给出卸载重装步骤,卸载完之后,记得换源在装ros啊!!!.

  • 1.卸载之前安装的ros:
$ sudo apt-get remove ros-*

这一步要特别注意,确保把旧的安装文件全部删除了.以确保下次安装的ros是从新源里重新下载安装的.一个小技巧来检测安装是基于旧文件还是新源的方法:安装ros异常的快(过程中一开始就看到解析,没有看到下载),说明旧文件没被删除,安装时直接用的是旧文件.

  • 2.将源更改为国内镜像源,如中科大的源,清华大学的源等.具体源更改可参照官网.如果没有xx工具 ,不要傻乎乎的用下图1.2节中的源.请点Mirrors进入查看国内镜像源,并自行百度添加过程.

sudo rosdep init ERROR: cannot download default sources list from:【closed】_第3张图片

  • 3.然后执行
$ sudo apt-get update
$ sudo apt-get install ros-kinetic-desktop-full
$ sudo rosdep init
$ rosdep update

结语

愿所有认真调BUG的人都能被温柔对待。小心心真的很脆很弱!!!

你可能感兴趣的:(debug)