ros(14):sudo rosdep init和rosdep update报错解决与理论分析----应该绝对好用

一、报错

1.1 sudo rosdep init报错

        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.

示例如下:

meng@meng:~$ 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.

1.2 rosdep update报错

        同时当sudo rosdep init成功后,同样会因为网络问题而在执行rosdep update时卡住       

二、报错解决与理论分析

2.1 下载rosdep文件到本地(不能访问github可以留下邮箱)

        rosdep是ros的“依赖项”,ros运行一般需要这些文件;rosdep官方github地址为:https://github.com/ros/rosdistro

        进入网站,可以看出,只有少部分文件在近期更新,一般不是很影响(如果怕影响可以定期更新下载的文件并进行替换),直接下载即可(举个例子,我在大四下自己用自己下载的rosdep到自己的笔记本上用,现在研一下了还可以用)

         下载命令为:(如果新电脑无法下载,可以用别的电脑下载并拷贝过来)

git clone https://github.com/ros/rosdistro

2.2 创建并修改20-default.list文件

        没有20-default.list文件时,创建命令如下:(有的话直接打开修改即可)

mkdir -p /etc/ros/rosdep/sources.list.d/20-default.list

        并打开/etc/ros/rosdep/sources.list.d/20-default.list进行修改:

sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list

        填入并修改以下文件地址:(注:file://是本地文件链接方式,不同于https等)

    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

        文件地址可以从2.1下载的文件中获得:

 

 

2.3 修改/usr/lib/python2.7/dist-packages/rosdep2/目录下文件

2.3.1 sources_list.py

        打开文件:

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

        在第75行左右,修改DEFAULT_SOURCES_LIST_URL = ‘file:///etc/ros/rosdep/sources.list.d/20-default.list’,其中file:///etc/ros/rosdep/sources.list.d/20-default.list为在2.2中创建文件的地址,示例如下:

# default file to download with 'init' command in order to bootstrap
# rosdep
#DEFAULT_SOURCES_LIST_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list'
DEFAULT_SOURCES_LIST_URL = 'file:///etc/ros/rosdep/sources.list.d/20-default.list'

2.3.2 rep3.py

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

        修改 REP3_TARGETS_URL为本地targets.yaml文件地址,targets.yaml在2.1步骤下载的文件夹里面:

     

        修改第39行左右,示例如下:

# location of targets file for processing gbpdistro files
#REP3_TARGETS_URL = 'https://raw.github.com/ros/rosdistro/master/releases/targets.yaml'
REP3_TARGETS_URL = 'file:///home/bit/Desktop/softwares/ros_install/rosdistro/releases/targets.yaml' #hxz

2.3.3 __init__.py

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

        注:这个文件如果找不到,试着找init.py这个文件,但一般都是__init__.py

 sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/init.py

        修改DEFAULT_INDEX_URL 为2.1步骤下载的文件路径 'file:///media/meng/xx/ros_install/rosdistro/index-v4.yaml'

        修改示例如下:

# index information

#DEFAULT_INDEX_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
DEFAULT_INDEX_URL = 'file:///home/bit/Desktop/softwares/ros_install/rosdistro/index-v4.yaml' #hxz

2.4 rosdep update

sudo rosdep init #maybe be error,but don't worry
rosdep update

3 进一步理论分析

3.1 sudo rosdep init无法访问的链接:

        打开报错的链接:(从链接可以看出,该链接指向一个文件)

https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/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

3.1.1 进一步打开osx-homebrew.yaml

        其中apr、assimp、assimp-dev、boost等可以理解为包;

        osx中os为系统,加上一个x网上一些人说是苹果系统,这里就理解它为系统;

        homwbrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能,这里姑且就理解为包管理工具吧

        至于有的packages对应[],有的对应有内容,我暂时还没理解

https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml 内容如下(很长,这里只展示部分)

3.1.2  打开base.yaml链接

 https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml

        这应该是ros的各种组件(对应文件名称base)可以支持的系统(我在这里搜索cmake、turtle没有搜到任何内容

 

 3.1.3 python.yaml

https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml

         这应该是ros所依赖(dependency)的各种包

3.1.4 ruby.yaml

        和上面三个类似,应该也是在各个系统各个版本上面ros的依赖问题;我查了下ruby,据说它是一门脚本语言

https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml

 

3.1.5 fuerte.yaml

        这个文件应该是最容易读懂的啦,它说了最新包的版本及下载地址

https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值