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