Ubuntu20.04下noetic版本ros安装时rosdep update失败解决方法【一行命令】
一、问题:
安装完ros后,需要执行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.
导致无法进行下一步rosdep update
,其他改试图对墙做事情的方法时效性差,而且往往都是玄学。。。
二、方案:
1.新建脚本文件set_rosdep.sh
包含以下内容
#! /usr/bin/env bash
## for ubuntu 20.04 & ros noetic onlyecho -e "\n\033[1;32m>>> Only for UBUNTU [20.04] & ROS [noetic] <<<\033[0m\n"
if [ ${#} -ne 0 ]; thenecho -e "Usage: \033[1;31mbash ${0}\033[0m\n" ; exit 1
fi
L_USER=${USER}
sudo git clone https://github.com/ros/rosdistro.git /opt/ros/noetic/rosdistro
if [ ${?} -ne 0 ]; then echo -e "\033[0;31m\nERROR: git clone failed !\033[1m"; exit 1;
fi
sudo sed -i 's/https:\/\/raw.githubusercontent.com\/ros\/rosdistro\/master/file:\/\/\/opt\/ros\/noetic\/rosdistro/g' /opt/ros/noetic/rosdistro/rosdep/sources.list.d/20-default.list
sudo rosdep init > /dev/null
sudo mkdir -p /etc/ros/rosdep/sources.list.d
sudo cp /opt/ros/noetic/rosdistro/rosdep/sources.list.d/20-default.list /etc/ros/rosdep/sources.list.d/
sudo sed -i 's/https:\/\/raw.githubusercontent.com\/ros\/rosdistro\/master/file:\/\/\/opt\/ros\/noetic\/rosdistro/g' /usr/lib/python3/dist-packages/rosdistro/__init__.py
sudo sed -i 's/https:\/\/raw.githubusercontent.com\/ros\/rosdistro\/master/file:\/\/\/opt\/ros\/noetic\/rosdistro/g' /usr/lib/python3/dist-packages/rosdep2/rep3.py
sudo sed -i "s/https:\/\/raw.githubusercontent.com\/ros\/rosdistro/file:\/\/\/opt\/ros\/noetic\/rosdistro/g" /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
sudo sed -i "s/master\/releases\/fuerte.yaml/releases\/fuerte.yaml/g" /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
sudo -u ${L_USER} rosdep update
if [ ${?} -eq 0 ]; then echo -e "\n\033[1;32m>>> Successfully executed 'rosdep update' :) <<< \033[0m\nby streamwill" ; exit 0
else echo -e "\033[0;31m\nFailed to execute 'rosdep update' !\033[1m" ; exit 1
2.运行脚本set_rosdep.sh
完成rosdep update
bash set_rosdep.sh
NOTE: 执行期间应该要输入root密码,输入后回车即可。
3.Successfully executed ‘rosdep update’ 😃
三、!!!以下为自己操作详细步骤,可以跳过!!!
1. 下载rosdistro
到本地
- 下载方式1: 度娘rosdistro,取货码: jhkn
- 下载方式2:
git clone https://github.com/ros/rosdistro.git
- 必须保证文件夹名为
rosdistro
,且必须在当前用户目录下,即~
,形如~/rosdistro
。(只为保证后续直接复制命令执行)
2. 复制rosdistro
文件夹到ros安装路径
- 复制文件夹
rosdistro/
到路径/opt/ros/noetic
:
sudo cp ~/rosdistro/ /opt/ros/noetic/ -r
3.修改20-default.list
文件
- 修改
/opt/ros/noetic/rosdistro/rosdep/sources.list.d/20-default.list
文件
sudo sed -i 's/https:\/\/raw.githubusercontent.com\/ros\/rosdistro\/master/file:\/\/\/opt\/ros\/noetic\/rosdistro/g' /opt/ros/noetic/rosdistro/rosdep/sources.list.d/20-default.list
4.复制20-default.list
文件
- 复制
/opt/ros/noetic/rosdistro/rosdep/sources.list.d/20-default.list
文件到路径/etc/ros/rosdep/sources.list.d/
sudo cp /opt/ros/noetic/rosdistro/rosdep/sources.list.d/20-default.list /etc/ros/rosdep/sources.list.d/
- 如果没有路径
/etc/ros/rosdep/sources.list.d/
,则手动创建:
sudo mkdir -p /etc/ros/rosdep/sources.list.d
- 然后再次执行复制命令
sudo cp /opt/ros/noetic/rosdistro/rosdep/sources.list.d/20-default.list /etc/ros/rosdep/sources.list.d/
5. 修改三个.py
文件
- 文件一:
/usr/lib/python3/dist-packages/rosdistro/__init__.py
sudo sed -i 's/https:\/\/raw.githubusercontent.com\/ros\/rosdistro\/master/file:\/\/\/opt\/ros\/noetic\/rosdistro/g' /usr/lib/python3/dist-packages/rosdistro/__init__.py
- 文件二:
/usr/lib/python3/dist-packages/rosdep2/rep3.py
sudo sed -i 's/https:\/\/raw.githubusercontent.com\/ros\/rosdistro\/master/file:\/\/\/opt\/ros\/noetic\/rosdistro/g' /usr/lib/python3/dist-packages/rosdep2/rep3.py
- 文件三:
/usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
sudo sed -i "s/https:\/\/raw.githubusercontent.com\/ros\/rosdistro/file:\/\/\/opt\/ros\/noetic\/rosdistro/g" /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
sudo sed -i "s/master\/releases\/fuerte.yaml/releases\/fuerte.yaml/g" /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
6.执行rosdep update
完成ros-noetic更新
Successfully executed ‘rosdep update’
一键操作,简单快捷。 😃
REF
[1].Ubuntu20.04 rosdep update失败解决方法