(成功)ROS安装过程中如何解决 rosdep update 命令出现错误——安装记录

系统:ubuntu18.04

系统:ubuntu18.04

ros:ros-melodic

大部分解决办法转载自:https://zhuanlan.zhihu.com/p/392082731

1.sudo rosdep init报错(切换为手机热点init成功!

ERROR: Rosdep experienced an error: ('The read operation timed out',)
Please go to the rosdep page [1] and file a bug report with the stack trace below.
[1] : http://www.ros.org/wiki/rosdep

rosdep version: 0.11.8

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/rosdep2/main.py", line 137, in rosdep_main
    exit_code = _rosdep_main(args)
  File "/usr/lib/python2.7/dist-packages/rosdep2/main.py", line 381, in _rosdep_main
    return _no_args_handler(command, parser, options, args)
  File "/usr/lib/python2.7/dist-packages/rosdep2/main.py", line 389, in _no_args_handler
    return command_handlers[command](options)
  File "/usr/lib/python2.7/dist-packages/rosdep2/main.py", line 516, in command_init
    data = download_default_sources_list()
  File "/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py", line 318, in download_default_sources_list
    f = urlopen(url, timeout=DOWNLOAD_TIMEOUT)
  File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python2.7/urllib2.py", line 429, in open
    response = self._open(req, data)
  File "/usr/lib/python2.7/urllib2.py", line 447, in _open
    '_open', req)
  File "/usr/lib/python2.7/urllib2.py", line 407, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 1248, in https_open
    context=self._context)
  File "/usr/lib/python2.7/urllib2.py", line 1208, in do_open
    r = h.getresponse(buffering=True)
  File "/usr/lib/python2.7/httplib.py", line 1178, in getresponse
    response.begin()
  File "/usr/lib/python2.7/httplib.py", line 452, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python2.7/httplib.py", line 408, in _read_status
    line = self.fp.readline(_MAXLINE + 1)
  File "/usr/lib/python2.7/socket.py", line 480, in readline
    data = self._sock.recv(self._rbufsize)
  File "/usr/lib/python2.7/ssl.py", line 754, in recv
    return self.read(buflen)
  File "/usr/lib/python2.7/ssl.py", line 641, in read
    v = self._sslobj.read(len)
SSLError: ('The read operation timed out',)

2.sudo rosdep update报错

reading in sources list data from /etc/ros/rosdep/sources.list.d
Warning: running 'rosdep update' as root is not recommended.
  You should run 'sudo rosdep fix-permissions' and invoke 'rosdep update' again without sudo.
^CTraceback (most recent call last):
  File "/usr/bin/rosdep", line 4, in <module>
    rosdep_main()
  File "/usr/lib/python2.7/dist-packages/rosdep2/main.py", line 137, in rosdep_main
    exit_code = _rosdep_main(args)
  File "/usr/lib/python2.7/dist-packages/rosdep2/main.py", line 381, in _rosdep_main
    return _no_args_handler(command, parser, options, args)        
  File "/usr/lib/python2.7/dist-packages/rosdep2/main.py", line 389, in _no_args_handler
    return command_handlers[command](options)
  File "/usr/lib/python2.7/dist-packages/rosdep2/main.py", line 579, in command_update
    error_handler=update_error_handler)
  File "/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py", line 452, in update_sources_list
    rosdep_data = download_rosdep_data(source.url)
  File "/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py", line 294, in download_rosdep_data
    f = urlopen(url, timeout=DOWNLOAD_TIMEOUT)
  File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python2.7/urllib2.py", line 429, in open
    response = self._open(req, data)
  File "/usr/lib/python2.7/urllib2.py", line 447, in _open
    '_open', req)
  File "/usr/lib/python2.7/urllib2.py", line 407, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 1248, in https_open
    context=self._context)
  File "/usr/lib/python2.7/urllib2.py", line 1208, in do_open
    r = h.getresponse(buffering=True)
  File "/usr/lib/python2.7/httplib.py", line 1178, in getresponse
    response.begin()
  File "/usr/lib/python2.7/httplib.py", line 452, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python2.7/httplib.py", line 408, in _read_status
    line = self.fp.readline(_MAXLINE + 1)
  File "/usr/lib/python2.7/socket.py", line 480, in readline
    data = self._sock.recv(self._rbufsize)
  File "/usr/lib/python2.7/ssl.py", line 754, in recv
    return self.read(buflen)
  File "/usr/lib/python2.7/ssl.py", line 641, in read
    v = self._sslobj.read(len)

解决方法:

这里为大家写出详细的命令:

1.打开包含资源下载函数的文件:

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

2. 添加代理:

url="https://ghproxy.com/"+url

下面是代码修改的位置

3. 修改/usr/lib/python2.7/dist-packages/rosdistro/__init__.py文件中的DEFAULT_INDEX_URL

$ sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'

4. 修改其余(4个)文件中的地址,在地址 https://raw.githubusercontent.com/... 前添加https://ghproxy.com/(我自身的情况,在这四个文件中,只有第二个跟第四个是https://raw.githubusercontent.com/...        第一个跟第三个是在对应的行上有https://raw.github.com/ros/rosdistro/..方法也是在前面加上https://ghproxy.com/

$ sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
//修改第36行的地址
$ sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py 72行
//修改第72行
$ sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
//修改第39行
$ sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py
//修改第68行、119行

5. 解决 Hit 第五个地址的报错

$ sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 
//在第204行添加如下代码(即在该函数块下的第一行处)
gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url
//注意,原网址中代理地址的双引号是中文,直接粘贴复制会报字符识别错误

6. 再次运行 rosdep update ,发现问题完美解决!

7.对于自身情况再次运行 rosdep update问题没有解决,而是出现了下错误(上面文章里的第5步并没有效果):

reading in sources list data from /etc/ros/rosdep/sources.list.d
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml]:
	Failed to download target platform data for gbpdistro:
	HTTP Error 403: FORBIDDEN
Query rosdistro index https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml
Add distro "ardent"
Add distro "bouncy"
Add distro "crystal"
Add distro "dashing"
Add distro "eloquent"
Add distro "foxy"
Add distro "galactic"
Add distro "groovy"
Add distro "hydro"
Add distro "indigo"
Add distro "jade"
Add distro "kinetic"
Add distro "lunar"
Add distro "melodic"
Add distro "noetic"
Add distro "rolling"
updated cache in /home/zcy/.ros/rosdep/sources.cache
ERROR: Not all sources were able to be updated.
[[[
ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml]:
	Failed to download target platform data for gbpdistro:
	HTTP Error 403: FORBIDDEN
]]]

ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml]:
    Failed to download target platform data for gbpdistro:
    HTTP Error 403: FORBIDDEN
]]]

8.继续寻找解决办法——直接下载源文件进行替换

使用这个方法需要将上面方法改过的内容先还原!!!

使用这个方法需要将上面方法改过的内容先还原!!!

使用这个方法需要将上面方法改过的内容先还原!!!

转载:https://zhuanlan.zhihu.com/p/377780797

1.git clone

ros/rosdistro​github.com/ros/rosdistro.git

2.cd /home/yourname/rosdistro/rosdep/sources.list.d/
3.sudo gedit 20-default.list

# os-specific listings first
yaml file:///home/yourname/rosdistro/rosdep/osx-homebrew.yaml osx

# generic
yaml file:///home/yourname/rosdistro/rosdep/base.yaml
yaml file:///home/yourname/rosdistro/rosdep/python.yaml
yaml file:///home/yourname/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/yourname/rosdistro/releases/fuerte.yaml fuerte
4.将文件中的网址替换为你的文件路径,将"raw.githubusercontent.com"修改为/home/yourname/rosdistro/rosdep

下面三个文件中也要修改,修改方式同上,查看你的python2.7
/usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
/usr/lib/python2.7/dist-packages/rosdep2/rep3.py
/usr/lib/python2.7/dist-packages/rosdistro/__init__.py

sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
# FUERTE_GBPDISTRO_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml'
FUERTE_GBPDISTRO_URL = 'file:///etc/ros/rosdistro-master/releases/fuerte.yaml'

sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
# REP3_TARGETS_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml'
REP3_TARGETS_URL = 'file:etc/ros/rosdistro-master/releases/targets.yaml'

sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
# DEFAULT_INDEX_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
DEFAULT_INDEX_URL = 'file:///etc/ros/rosdistro-master/index-v4.yaml'

下面三个文件中也要修改,修改方式同上,查看你的python3
5.cd /usr/lib/python3/dist-packages/rosdep2/
6.sudo gedit gbpdistro_support.py

FUERTE_GBPDISTRO_URL = 'file:///home/yourname/rosdistro/' \
    'releases/fuerte.yaml'

7.cd /usr/lib/python3/dist-packages/rosdep2/
8.sudo gedit rep3.py

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

DEFAULT_INDEX_URL = 'file:///home/yourname/rosdistro/index-v4.yaml'

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

#os-specific listings first
yaml file:///home/yourname/rosdistro/rosdep/osx-homebrew.yaml osx
#generic
yaml file:///home/yourname/rosdistro/rosdep/base.yaml
yaml file:///home/yourname/rosdistro/rosdep/python.yaml
yaml file:///home/yourname/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/yourname/rosdistro/releases/fuerte.yaml fuerte
 
同理替换网址
#newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

再执行rosdep update

 操作过程中遇到的问题:1.我在python3下没有rosdep2这个文件夹,所以第5~8步骤没有执行;2.第9~10步骤与上面第4步中的在__init__.py文件中的操作冲突,我选择执行第4步,没有执行9~10步骤。

按照上面的步骤执行完,再次rosdep update出现的问题:

reading in sources list data from /etc/ros/rosdep/sources.list.d
Hit file:///home/zcy/rosdistro/rosdep/osx-homebrew.yaml
Hit file:///home/zcy/rosdistro/rosdep/base.yaml
Hit file:///home/zcy/rosdistro/rosdep/python.yaml
Hit file:///home/zcy/rosdistro/rosdep/ruby.yaml
ERROR: unable to process source [file:///home/zcy/rosdistro/releases/fuerte.yaml]:
	Failed to download target platform data for gbpdistro:
	<urlopen error [Errno 2] No such file or directory: 'etc/ros/rosdistro-master/releases/targets.yaml'>
Query rosdistro index https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml
Skip end-of-life distro "ardent"
Skip end-of-life distro "bouncy"
Skip end-of-life distro "crystal"
Skip end-of-life distro "dashing"
Skip end-of-life distro "eloquent"
Add distro "foxy"
Add distro "galactic"
Skip end-of-life distro "groovy"
Skip end-of-life distro "hydro"
Skip end-of-life distro "indigo"
Skip end-of-life distro "jade"
Skip end-of-life distro "kinetic"
Skip end-of-life distro "lunar"
Add distro "melodic"
Add distro "noetic"
Add distro "rolling"
updated cache in /home/zcy/.ros/rosdep/sources.cache
ERROR: Not all sources were able to be updated.
[[[
ERROR: unable to process source [file:///home/zcy/rosdistro/releases/fuerte.yaml]:
	Failed to download target platform data for gbpdistro:
	<urlopen error [Errno 2] No such file or directory: 'etc/ros/rosdistro-master/releases/targets.yaml'>
]]]

解决方法:根据<urlopen error [Errno 2] No such file or directory: 'etc/ros/rosdistro-master/releases/targets.yaml'>可知问题为打开targets.yaml文件失败,因此重新给定路径:

sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
# REP3_TARGETS_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml'
# REP3_TARGETS_URL = 'file:etc/ros/rosdistro-master/releases/targets.yaml'
REP3_TARGETS_URL = 'file:///home/zcy/rosdistro/releases/targets.yaml'

问题解决!

  • 30
    点赞
  • 143
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
### 回答1: 要解决ROS系统rosdep update问题,您可以尝试以下步骤: 1. 确保您的ROS版本已正确安装并配置。 2. 确认您的网络连接正常,可以访问ROS软件源。 3. 执行以下命令更新rosdep: ``` sudo apt-get update sudo apt-get install python-rosdep sudo rosdep init rosdep update ``` 4. 如果您仍然遇到问题,请尝试使用代理服务器或更改软件源。 希望这些步骤可以帮助您解决rosdep update问题。 ### 回答2: ROS是一个非常强大的机器人操作系统,它提供了大量的用于开发机器人应用程序的功能。然而,在使用ROS时,有时会出现rosdep update无法解决的问题。有以下几种方法可以解决这个问题: 1.更改源 在执行rosdep update命令时,如果它卡在'connecting to raw.github.com'步骤,则可能是由于RAW GitHub被阻止了。为了解决这个问题,可以尝试更改ROS配置文件ROS下载源。打开终端并输入以下命令: sudo gedit /etc/apt/sources.list.d/ros-latest.list 然后将deb http://packages.ros.org/ros/ubuntu替换为deb [官方源] http://mirrors.ustc.edu.cn/ros/ubuntu和deb-src [官方源] http://mirrors.ustc.edu.cn/ros/ubuntu。 然后,保存更改并运行以下命令: sudo apt-get update 重新执行rosdep update命令,问题应该会解决。 2. 设置代理 如果你使用的是命令行,可以执行以下命令设置HTTPS代理: export HTTPS_PROXY="http://yourproxy:port" 如果你使用的是Ubuntu系统,可以在系统环境变量设置代理。打开终端,输入以下命令: sudo vi /etc/environment 然后在文件末尾添加以下命令: HTTPS_PROXY="yourproxy:port" HTTP_PROXY="yourproxy:port" 保存文件,关闭并重启终端。 3.使用conda 使用conda可以避免rosdep update的这个问题。首先,在Anaconda安装Miniconda。然后创建一个新conda环境并通过conda-forge频道安装ROS所需的软件包。执行以下命令: conda create --name ros python=3.6 conda-forge-rospkg 然后激活新环境,即执行以下命令: conda activate ros 安装其他需要的软件包,例如rospy、rosbag和其他ROS包: conda install -c conda-forge rospy rosbag 这三种方法任何一种都可以解决rosdep update的问题。 ### 回答3: ROS(机器人操作系统)是一种开源框架,常用于机器人软件开发。在ROSrosdep是重要的工具之一,用于管理系统依赖。但是,当遇到rosdep update无法更新的问题,可采取以下步骤: 1. 确认网络连接正常:运行命令ping www.baidu.com,确保网络连接正常。若没有网络连接,则需要排查问题,确保网络设置正确。 2. 检查软件源:在执行rosdep update时,需要从软件源获取依赖包的信息。如果软件源损坏或者设置不正确,就会导致rosdep update失效。可以通过修改源的方式来解决问题。具体操作步骤如下: (1)进入/etc/apt目录,执行命令ls查看sources.list.d文件夹内是否存在ros-latest.list等ros相关的文件。 (2)确定需要修改的sources.list.d文件夹内的ros相关文件名,如ros-latest.list。 (3)备份该文件,使用命令sudo cp 文件名 文件名.bak进行备份。 (4)编辑文件,使用命令sudo gedit 文件名进行编辑。 (5)将原有的软件源修改为可用的软件源,例如修改为http://packages.ros.org/ros/ubuntu。修改完成后,保存并关闭编辑器。 (6)执行rosdep update进行测试。 3. 更新rosdep:如果上述步骤仍然无法解决问题,则可能是rosdep本身存在问题。可以通过升级rosdep解决。具体操作步骤如下: (1)执行命令sudo apt-get update 更新软件包列表。 (2)执行命令sudo apt-get install python-rosdep更新rosdep。 (3)执行命令sudo rosdep init,初始化rosdep。 (4)执行命令rosdep update,更新rosdep。 4. 删除缓存文件:在rosdep update过程,可能会因为本地缓存文件损坏而导致更新失败。可以通过删除缓存文件的方式解决问题。具体操作步骤如下: (1)执行命令sudo rm -rf /var/lib/apt/lists/*。 (2)执行命令sudo apt-get clean。 (3)执行命令sudo update。 (4)执行命令rosdep update。 总之,针对rosdep update无法更新的问题,可以从修改软件源、更新rosdep、删除缓存文件等角度入手,找到问题所在并解决之。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值