我等会给你们开源一个python脚本,自动修改:并且把源代码发到博客里面
注意了使用这个脚本的前提是安装sudo apt install python3-rosdep2;否则文件夹就不对了
#rosdep初始化软件无界面
def replacex():
addr1=addr
fi=open(addr1,'r+')
cont=fi.read()
cont=cont.replace(r'raw.githubusercontent.com/ros/rosdistro/',r'gitee.com/geniuschinahn/rosdistro/raw/')
fi.close()
fi=open(addr1,'w+')
fi.write(cont)
fi.close()
initfi='yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx\nyaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml\nyaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml\nyaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml\ngbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte'
addr=r'/etc/ros/rosdep/sources.list.d/20-default.list'
fi=open(addr,'r+')
lenfi=fi.read()
fi.close()
#判断一下是否有github字样
if lenfi.find('github')<0:#没有找到GiHub就是已经设置好了,就不用再设置了
print('success')
else:
fi.write(initfi)
fi.close()
replacex()
addr=r'/usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py'
replacex()
addr=r'/usr/lib/python3/dist-packages/rosdep2/rep3.py'
replacex()
addr=r'/usr/lib/python3/dist-packages/rosdep2/sources_list.py'
replacex()
addr=r'/usr/lib/python3/dist-packages/rosdistro/__init__.py'
replacex()
print('太好了修改成功')
看吧执行成功了:
博主的思路是新思路:将相关资源备份到 gitee,修改 rosdep 源码,重新定位资源。成功率是百分百。
整理修改后提供解决ROS rosdep init/update报错的方法(终极版)。
步骤1
进入到 sources.list.d 文件夹(如果没有,则用mkdir指令新建)
修改 gedit 20-default.list
-
cd /etc/ros/rosdep/sources.list.d
-
sudo gedit 20-default.list
将里面所有的
raw.githubusercontent.com/ros/rosdistro/master
替换成
gitee.com/geniuschinahn/rosdistro/raw/master
修改前:
-
# 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
修改后:(这个算是我的备份了,以后都可以直接复制,任何人都可以直接复制使用的)
yaml https://gitee.com/geniuschinahn/rosdistro/raw/master/rosdep/osx-homebrew.yaml osx
yaml https://gitee.com/geniuschinahn/rosdistro/raw/master/rosdep/base.yaml
yaml https://gitee.com/geniuschinahn/rosdistro/raw/master/rosdep/ruby.yaml
yaml https://gitee.com/geniuschinahn/rosdistro/raw/master/rosdep/python.yaml
gbpdistro https://gitee.com/geniuschinahn/rosdistro/raw/master/releases/fuerte.yaml fuerte
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
步骤2
进入到 rosdep2 文件夹,
修改 gbpdistro_support.py
-
cd /usr/lib/python3/dist-packages/rosdep2/
-
sudo gedit gbpdistro_support.py
将里面所有的
raw.githubusercontent.com/ros/rosdistro/master
替换成(我的备份)
gitee.com/geniuschinahn/rosdistro/raw/master
修改后如下
-
FUERTE_GBPDISTRO_URL = 'https://gitee.com/
geniuschinahn/rosdistro/raw/' \
-
'master/releases/fuerte.yaml'
步骤3
进入到 rosdep2 文件夹,
修改 rep3.py
-
cd /usr/lib/python3/dist-packages/rosdep2/
-
sudo gedit rep3.py
将里面所有的
raw.githubusercontent.com/ros/rosdistro/master
替换成
gitee.com/geniuschinahn/rosdistro/raw/master
修改后如下
REP3_TARGETS_URL = 'https://gitee.com/geniuschinahn/rosdistro/raw/master/releases/targets.yaml'
步骤4
进入到 rosdep2 文件夹,
修改 sources_list.py
-
cd /usr/lib/python3/dist-packages/rosdep2/
-
sudo gedit sources_list.py
将里面所有的
raw.githubusercontent.com/ros/rosdistro/master
替换成
gitee.com/geniuschinahn/rosdistro/raw/master
修改后如下
DEFAULT_SOURCES_LIST_URL = 'https://gitee.com/geniuschinahn/rosdistro/raw/master/rosdep/sources.list.d/20-default.list'
步骤5
进入到 rosdistro 文件夹
修改 __init__.py
-
cd /usr/lib/python3/dist-packages/rosdistro/
-
sudo gedit __init__.py
将里面所有的
raw.githubusercontent.com/ros/rosdistro/master
替换成
gitee.com/geniuschinahn/rosdistro/raw/master
修改后如下
DEFAULT_INDEX_URL = 'https://gitee.com/geniuschinahn/rosdistro/raw/master/index-v4.yaml'
最后
打开新终端执行
rosdep update
如果出现如下提示则表示成功!
ATTETION:上边2个方法要都看一下,然后稍微修改一下文件路径,可能要调整一下路径,具体就自己去找到那个文件,然后修改一下路径了。我觉得可能yaml文件和Py文件内路径有调整,注意看就可以解决这个问题。
很重要的地方:如果是使用gitte那么文件路径一定要带raw,否者获取的网页就不是原始网页内容,而是整个网页内容
为了不每次都这么麻烦来修改,建议自己写一个python脚本来处理这个过程,别人写的脚本当然不如自己写的安全。。。。。。。。。。。。。。。。。。下次再见
还有一个重要的事情:做完上面的修改不要再使用rosdep init,即使用了也不会成功的
但是我们不需要init了,就跳过这一步就可以了。
虽然说还有个文件异常,估计是多修改了某个路径,但是既然一切正常就先用着吧