瞬间解决sudo rosdep init 和 rosdep update网络问题(最新)

/一.一些废话和感慨       

        作为一个ROS小白,ROS已经安装过n多次了,就不去细数具体有多少次了(包括把系统搞崩的几次)。每一次安装ROS都会发现经典rosdep两个问题。

每一次解决问题都翻遍了许多rosdep解决办法。然而每回都会花大量的时间查找各种都不好用。

        在试过无数次rosdep以后,很有可能也没什么办法。不过参考了2021最新解决办法 (姑且这么简称)之后恍然大悟。关于rosdep init 大家想必已经驾轻就熟,就是下载一个文件到/etc/ros/rosdep/sources.list.d下,名字叫做20-default.list。只要把别人的20-default.list内容拷贝下来就可以。不过这样rosdep update仍然会报错。

二.进入正题

1.关键点能否进入https://ghproxy.com/ ,如果你能很好的连上这个网址,那么基本上就没有问题了。

2.sudo rosdep init 是为了将官方的20-default.list 下载下来,放入/etc/ros/rosdep/sources.list.d/目录下

rosdep update 是为了从上述下载下的文件中读取目录下载更新.cache文件

所以一键双雕的办法就是直接更改或者创建这个文件,并且把里面的链接都更换为代理下网址。

这样做的理想结果应该是:无需执行sudo rosdep init,直接一遍过rosdep update。

下述代码就是修改过的20-default.list

这里请大家注意:每个版本的ROS的这个文件夹是不同的,下述是20.04版本noetic的文件

如果是其他版本可以翻阅查询其他博客获取,更改方式均相同,就是把这个文件夹所有的链接都加

https://ghproxy.com/ 以及部分链接的开头不是yaml,如果跑不过去就改成yaml

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

# generic
yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
yaml https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte

如果大家没有执行rosdep init ,就不会有20-default.list这个文件,我们可以自己手动创建这个目录

cd /etc
sudo mkdir ./ros && cd ./ros
sudo mkdir ./rosdep && cd ./rosdep
sudo mkdir ./sources.list.d && cd ./sources.list.d

当然你也可以手动创建这些目录,与上述代码效果没有区别。然后新建一个20-default.list,并将上述所有代码复制粘贴入20-default.list。

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

当你保存了这个文件之后已经成功了大半。

此时还有童鞋反映说除了一开始的5个hit会出错之外,Query那一行也报错:

针对遇到这样情况的童鞋额外需要改一个参数了:

将usr/lib/python3/dist-packages/rosdistro/__init__.py 的DEFAULT_INDEX_URL 那一行链接也加上https://ghproxy.com如下图所示

遗憾的是这个文件目录各个版本可能不一样,如果你在这个路径下没有找到这个文件夹,请直接搜

索rosdistro再修改.

当你找到这个rosdistro之后,右键点击在当前目录下打开终端,输入如下语句。

sudo gedit __init__.py

在链接处添加https://ghproxy.com/就可以保存关闭了

剩下只需要执行rosdep update就可以大功告成了。

sudo apt update
rosdep update

不过很遗憾的是,这个方法虽然极大提高成功率,但是并不一定能直接一遍过,当然你已经过了就可以跳过下面的说明了。

虽然通过这个代理可以保证不被墙,但是仍然会受到网速限制。

是有低概率会出现Bad Gateway 或者 Read time超时,一般就是你的网不太行,这个你只能自己更换一个更好的网络,如果你不巧碰上了就不断重复上面两条语句

如果你的软件源不是最优的服务器,请更换到最优服务器,这样也能大大提高成功率。

成功了的话应该是下面这个样子:

这是我目前找到的最好用的办法,尝试后一发入魂。期待大家的rosdep也能瞬间通过!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值