这里写目录标题
注意!!!
以下内容可以不用在看,此处推荐最终极方案
问题描述:
运行 sudo rosdep init和 rosdep update 指令时,发生如下报错
# 运行命令
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.
此处主要提供了四类解决方案,繁复程度依次增加,建议大家可以从方案一进行尝试若不行再进行至下一个方案。
**注意:**方案四在博主的试验下,确保可以百分百解决此类问题,但是由于比较繁琐建议大家依次进行。
方案一:连接手机热点
根据博主和博主队友的经验来看,在使用sudo rosdep init
和rosdep update
命令时,将电脑联网设置为无线wifi并连接手机热点进行将大大提高成功几率。
博主的队友在运行此命令时就实现一次成功,未出现报错。但是博主之后重装Ubuntu20.04后发现自己无法通过此方案成功运行了,建议大家可以尝试此方案。
方案二:修改hosts地址
通过修改hosts地址实现解决问题。
# 修改hosts文件
sudo vim /etc/hosts
# 在文件末尾添加如下内容:
151.101.84.133 raw.githubusercontent.com
# 运行指令,查看是否解决
sudo rosdep init
方案三:解决各类小问题
造成此问题的原因还有可能有如下几种,建议搭建逐条排除问题。
1.ca-certificates证书问题
# 重装证书
sudo apt-get install ca-certificates
# 运行指令,查看是否解决
sudo rosdep init
2.时间同步问题
# 安装ntpdate工具
sudo apt-get install ntpdate
# 设置系统时间与网络时间同步
ntpdate cn.pool.ntp.org
# 将系统时间写入硬件时间
sudo hwclock --systohc
# 运行指令,查看是否解决
sudo rosdep init
3.ssl certs问题
sudo c_rehash /etc/ssl/certs
sudo -E rosdep init
4.python-rosdep问题
# ROS版本为Melodic及之前的(Ubuntu版本为18.04及之前的)安装如下
sudo apt-get install python-rosdep
# ROS版本为Noetic及之后可能存在的(Ubuntu版本为20.04及之后可能存在的)安装如下
sudo apt-get install python3-rosdep
# 运行指令,查看是否解决
sudo rosdep init
方案四:本地进行编译和下载
此处参考博文:sudo rosdep init 出现 ERROR: cannot download default sources list from:
由于博主使用的 ROS Noetic 适配于 Python3 ,需要对此方法作出修改(1-2步不变)。
1.下载源码包文件
下载 rosdistro包文件,若无法访问GitHub可以使用GitHub加速网站进行下载或者将其搬运至国内Gitee。
# 下载文件
git clone https://github.com/ros/rosdistro.git
2.修改url地址指向本地文件
通过将url指向本地,实现对问题的解决。
# 进入下载的源码包内
cd rosdistro
# 修改url指向本地
sudo vim rosdep/sources.list.d/20-default.list
博主的修改内容如下:
# os-specific listings first
yaml file:///home/jasonli/develop/rosdistro/rosdep/osx-homebrew.yaml osx
# generic
yaml file:///home/jasonli/develop/rosdistro/rosdep/base.yaml
yaml file:///home/jasonli/develop/rosdistro/rosdep/python.yaml
yaml file:///home/jasonli/develop/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/jasonli/develop/rosdistro/releases/fuerte.yaml fuerte
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
其中,地址 /home/jasonli/develop/rosdistro/ 为博主存放改源码包的地址,大家需要将其修改为自己的地址。格式file://
为url指向本地文件的头。
3.修改配置文件内默认url
配置完成下载文件后需要将下载所用配置文件内的默认地址同样进行修改。
此处注意,对于ROS Melodic及之前版本的修改地址因该同上述博文中博主一样为python2,而Noetic版本及之后可能存在的版本应将地址修改为python3
# 进入rosdep2目录(Melodic及之前)
cd /usr/lib/python2.7/dist-packages/rosdep2
# 进入rosdep2目录(Noetic及之后)
cd /usr/lib/python3/dist-packages/rosdep2
修改sources_list.py文件
# 修改第一个文件 sources_list.py
sudo vim sources_list.py
打开文件将第72行参数 DEFAULT_SOURCES_LIST_URL 修改为如下内容,需要将其修改为你的地址:
DEFAULT_SOURCES_LIST_URL = 'file:///home/jasonli/develop/rosdistro/rosdep/sources.list.d/20-default.list'
修改rep3.py文件
# 修改第二个文件 rep3.py
sudo vim rep3.py
打开文件将第39行参数 REP3_TARGETS_URL 修改为如下内容,需要将其修改为你的地址:
REP3_TARGETS_URL = 'file:///home/jasonli/develop/rosdistro/releases/targets.yaml'
修改__init__.py文件
# 修改第三个文件 __init__.py
cd ../rosdistro # 在上述文件所在目录的上级目录下的rosdistro文件内
sudo vim __init__.py
打开文件将第68行参数 DEFAULT_INDEX_URL 修改为如下内容,需要将其修改为你的地址:
DEFAULT_INDEX_URL = 'file:///home/jasonli/develop/rosdistro/index-v4.yaml'
4.运行rosdep
sudo rosdep init
正确运行将如下显示:
注意此处要是存在报错,说明之前几步中修改的文件内容存在问题,建议根据报错内容进行改进。
博主之前在修改文件时由于多打了一个星号,运行命令一直报错,然而我刚开始未看报错内容,导致卡了10几分钟进行排除错误。
根据提示,运行指令rosdep update
,该指令千万别加上sudo 听说会搞乱权限,导致只能重装系统才能解决问题。
rosdep update
总结
博主的电脑曾在Ubuntu16.04和18.04时用方案二和三解决过问题,而方案一则是博主队友成功的方式。在新安装的Ubuntu20.04上使用了方案四解决了问题。
参考资料
方案三:sudo rosdep init出错的解决方案
方案四:sudo rosdep init 出现 ERROR: cannot download default sources list from: