ROS 打包失败, 报错: dpkg-shlibdeps: error: no dependency information found for 依赖名

参考资料

@Philtell ROS功能包打包生成deb安装包 遇到 dpkg-shlibdeps: error: no dependency information found for 问题

问题描述

在这个ros包中有一个依赖是Paho-mqtt-cpp, 这个包在github上是以源码形式存在的, 因此需要在客户端上进行手动编译与下载, 这就导致在进行打包时dh_shlibdeps无法自动找到他相关的依赖, 因此无法完成deb包的生成, 即使是按照 Paho-mqtt-cpp官方的指南, 将paho-mqtt-cpp打包成paho-mqtt-cpp.deb再进行安装也是无法完成依赖的自动添加, 因此无法完成deb包的生成

解决

按照@Philtell的指南ROS功能包打包生成deb安装包 遇到 dpkg-shlibdeps: error: no dependency information found for 问题, 在打包时, 手动添加参数, 跳过该包的依赖就可以解决问题, 成功打包

注:

​ 打包成功后, paho-mqtt-cpp是无法被正确安装的, 因此在需要安装ROS包的机器上需要首先下载与安装paho-mqtt-cpp, 否则即使安装了这个包, 在执行时也会出现问题

过程

cd 包名 #这里要与package.xml同级
bloom-generate rosdebian
sudo vim debian/rules

这是生成的 debian/rules 绝对路径为 包名/debian/rules

# 自动生成的override_dh_shlibdeps, 这个会自动处理相关包的依赖, 就会导致无法找到paho-mqtt-cpp
override_dh_shlibdeps:
	# In case we're installing to a non-standard location, look for a setup.sh
	# in the install tree that was dropped by catkin, and source it.  It will
	# set things like CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
	if [ -f "/opt/ros/noetic/setup.sh" ]; then . "/opt/ros/noetic/setup.sh"; fi && \
	dh_shlibdeps -l$(CURDIR)/debian/ros-noetic-mqtt-driver//opt/ros/noetic/lib/

这个是修改后的

# 修改后的override_dh_shlibdeps, 这个会自动忽略缺少的包
override_dh_shlibdeps:
	# 使用自定义参数运行 dh_shlibdeps
	dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info -l$(CURDIR)/debian/ros-noetic-mqtt-driver//opt/ros/noetic/lib/

参数分析

-l$(CURDIR)/debian/包名(可以在debian/找到一个ros-版本开头的包名)//opt/ros/(ros版本号)/lib/

你可能感兴趣的:(机器人,c++,开发语言)