sudo rosdep init & rosdep update初始化和更新困难问题解决办法

       在机器人开发过程中,因工作需要,需要经常在Ubuntu16.04或18.04下安装ros系统,但是在安装过程中经常遇到rosdep依赖初始化及更新非常困难。

     在使用Ros之前,必须先安装和初始化rosdep命令行工具,可以使你今后轻松地安装库和编译源代码时的系统依赖。

  $  sudo apt-get install python-rosdep

  $ 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.

这里可以在网页中手动下载20-default.list文件并复制到到/etc/ros/rosdep/sources.list.d目录下

https://raw.ctl.app/ros/rosdistro/master/rosdep/sources.list.d/20-default.list

当然,也可以手动修改/usr/lib/python2.7/dist-packages/rosdep2

/sources_list.py文件中的DEFAULT_SOURCES_LIST_URL=

https://raw.ctl.app/ros/rosdistro/master/rosdep/sources.list.d/20-default.list

替换为:https://raw.ctl.app/ros/rosdistro/master/rosdep/sources.list.d/20-default.list即可执行

sudo rosdep init

  $  rosdep update

更新时,经常报出超时错误。

之所以会报出如上两个错误,主要原因在于:在国内的部分网络环境中,访问https://raw.githubusercontent.com服务器时,经常出现无法访问的现象。主要出现网络访问超时,甚至根本连不上。

常规的解决办法是:

方法1、找到raw.githubusercontent.com对应的可访问的DNS地址。

在网上登录到DNS查询页面,输入raw.githubusercontent.com网址,查找TTL值比较小的IP地址,将其写入/etc/hosts文件中,示例如下:

$  sudo gedit /etc/hosts

127.0.0.1 localhost

127.0.1.1 xxxxx

199.232.28.133 raw.githubusercontent.com   #一定要放在这个位置

185.199.111.133 raw.githubusercontent.com

保存后重启。

这种情况下,遇到网络不好,延时比较大时,可以修改/usr/lib/python2.7/dist-packages/rosdep2/下的三个文件sources_list.py、gbpdistro_support.py、rep3.py中的DOWNLOAD_TIMEOUT = 15.0值,改大一点再试试。如果多次尝试仍然失败,则此方法就行不通了,主要取决于网络状况。

方法2、替换raw.githubusercontent.com网址为raw.ctl.app

将初始化和更新过程中出现的https://raw.githubusercontent.com/ros/rosdistro/master都替换为https://raw.ctl.app/ros/rosdistro/master。

替换方法如下:

以下为sudo gedit /etc/ros/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

修改后的内容如下:

# os-specific listings first
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx

# generic
yaml https://raw.ctl.app/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.ctl.app/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.raw.ctl.app/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.ctl.app/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

除了修改20-default.list文件,更新时,还会出现https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/index-v4.yaml,主要一些python文件中还有https://raw.githubusercontent.com的网址路径信息。

将/usr/lib/python2.7/dist-packages/rosdep2/rep3.py、sources_list

.py中的raw.githubusercontent.com替换为raw.ctl.app.

另外,还要修改/usr/lib/python2.7/dist-packages/rosdistro/__init__.py文件中的raw.githubusercontent.com。

注意此处和rep3.py的目录不同。因为在rosdep2目录中有同名的__init__.py文件存在。

修改后,重启,再次执行rosdep update可以很快更新完成。

方法3:在本地建立一个目录,手动下载这些文件:

yaml https://raw.ctl.app/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.ctl.app/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.raw.ctl.app/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.ctl.app/ros/rosdistro/master/releases/fuerte.yaml fuerte

还有index-v4.yaml(__init__.py文件中指向的配置文件)、targets.yaml(rep3.py文件中指向的配置文件)、osx-homebrew.yaml

将https://raw.githubusercontent.com/ros/rosdistro/master重定向到本地的file://home/xxx/rosdistro/目录下,将下载yaml文件放在该目录下,再执行更新即可。

最终执行成功。如下所示:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值