sudo rosdep inti及rosdep update报错解决

注意!!!

以下内容可以不用在看,此处推荐最终极方案

ROS——rosdep国内源更新

问题描述:

运行 sudo rosdep initrosdep 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 initrosdep 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:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值