在ZorinOS中优雅地使用rosdep

虽说ZorinOS和Elementary OS一样都是基于Ubuntu,但在ZorinOS中使用rosdep会提示Unsupport OS,而后者却不会,虽然我们可以在rosdep后加上参数–os=ubuntu:bionic(对应ubuntu18)临时解决,但总感觉不够优雅。

来自2022年的更新:不推荐用ZorinOS和rosdep

以下为笔者版本

ros:melodic
zorinos:15(对应ubuntu18)

以下来一个一劳永逸的方法(前提是ros不更新,不然就再改一次)
/usr/lib/python2.7/dist-packages/rosdep2/platform/debian.py

a. 首先修改这个文件,找到这一句

1
from rospkg.os_detect import OS_DEBIAN, OS_LINARO, OS_UBUNTU, OS_ELEMENTARY OS_MX, OsDetect, read_os_release

改成(也就是加上OS_ZORIN

1
from rospkg.os_detect import OS_DEBIAN, OS_LINARO, OS_UBUNTU, OS_ELEMENTARY, OS_ZORIN, OS_MX, OsDetect, read_os_release

b. 然后在函数def register_platforms(context):里面加上register_zorin(context)

c. 另外加上一个函数

1
2
3
4
5
6
7
8
def register_zorin(context):
# ZorinOS is an alias for Ubuntu. If ZorinOS is detected and it's
# not set as an override force ubuntu.
(os_name, os_version) = context.get_os_name_and_version()
if os_name == OS_ZORIN and not context.os_override:
print('rosdep detected OS: [%s] aliasing it to: [%s]' %
(OS_ZORIN , OS_UBUNTU), file=sys.stderr)
context.set_os_override(OS_UBUNTU, context.os_detect.get_codename())

保存该文件,接下来是
/usr/lib/python2.7/dist-packages/rospkg/os_detect.py

  1. 在720行左右加上OS_ZORIN = 'zorin'
  2. 在752行左右加上OsDetect.register_default(OS_ZORIN, LsbDetect("zorin"))
    保存完成!

接下来再试试rosdep,已经可以完美使用了。

作者

Yida

发布于

2020-02-25

更新于

2022-02-11

许可协议

评论