rosdep update遭遇ERROR:reading in sources list data from /etc/ros/rosdep/sources.list.d ERROR: unable to process source

出现原因

rosdep update需要访问的网址无法进入,所以报错

解决思路

在进行rosdep update的时候访问raw.githubusercontent.com,这个其实就是github的用户数据服务器。rosdep 程序下载的就是github.com/ros/rosdistro这个包里的yaml文件。
因此得到一个思路就是:首先下载github.com/ros/rosdistro包,将下列文件里面的默认的进入raw.githubusercontent.com去下载文件的url地址全部改为本地的下载的包的地址。

问题解决

S1:下载源码

进入github.com/ros/rosdistro去把这个包下载下来。放在/home/xxx目录下(即主目录)

S2:修改20-default.list文件里面的代码

sudo gedit /home/yourname/rosdistro/rosdep/sources.list.d/20-default.list 

修改这个包中rosdep/source.list.d/下的文件20-default.list,将这个文件中指向raw.githubusercontent.com的url地址全部修改为指向本地文件的地址,也就是该下载好的包的地址:

# os-specific listings first
yaml file:///home/xxx/rosdistro/rosdep/osx-homebrew.yaml osx

# generic
yaml file:///home/xxx/rosdistro/rosdep/base.yaml
yaml file:///home/xxx/rosdistro/rosdep/python.yaml
yaml file:///home/xxx/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/xxx/rosdistro/releases/fuerte.yaml fuerte

# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

注意:在py语言中,url本地文件地址格式是:file://+文件地址,后面更改其他文件中地址的时候也一样。

S3:修改sources_list.py文件里面的代码

sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py

在/usr/lib/python2.7/dist-packages/rosdep2文件夹下面的sources_list.py文件里面。而这个文件里面的代码则进行了访问raw.githubusercontent.com的操作,因此修改该默认url即可。

# default file to download with 'init' command in order to bootstrap
# rosdep
DEFAULT_SOURCES_LIST_URL = 'file:///home/xxx/rosdistro/rosdep/sources.list.d/20-default.list'

# seconds to wait before aborting download of rosdep data

S4:修改gbpdistro_support.py文件里面的代码

sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
FUERTE_GBPDISTRO_URL = 'file:///home/xxx/rosdistro/' \
    'releases/fuerte.yaml'

S5:修改rep3.py文件里面的代码

sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
# location of targets file for processing gbpdistro files
REP3_TARGETS_URL = 'file:///home/xxx/rosdistro/releases/targets.yaml'

# seconds to wait before aborting download of gbpdistro data

S6:修改__init__.py文件里面的代码

sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
# index information

DEFAULT_INDEX_URL = 'file:///home/xxx/rosdistro/index-v4.yaml'

def get_index_url():

S7:最后执行

sudo apt-get update
rosdep update

结果如下所示:

在这里插入图片描述
续:后面发现了一个更加方便的新方法:
1、安装pip或pip3

sudo apt-get install python3-pip #pip可以改成pip3

2、安装rosdepc

sudo pip3 install rosdepc

3、 进行初始化

sudo rosdepc init
rosdepc update

4、 结束(特别推荐)!!!!

参考自:

https://mp.weixin.qq.com/s/VGs8oWdhHH6XsHcx21lN4Q

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐