如何为我的ROS包生成deb可安装文件(脚本文件夹中的python代码)?

时间:2017-08-03 17:05:15

标签: python debian package ros deb

如何从我的包中的python文件(脚本文件夹)中生成deb可安装文件,这样我就可以将deb文件传递给可以在包中运行python可执行文件的客户端?

例如,我刚刚完成了ROS教程并在我的catkin工作区中创建了beginner_tutorials包。我还完成了Simple Publisher和Subscriber教程,它们指的是beginner_tutorials包中脚本文件夹中的python talker.py和listener.py。然后我在包文件夹中运行以下命令,〜/ ROS / catkin_workspace / src / beginner_tutorials:

$ bloom-generate rosdebian --os-name ubuntu --ros-distro kinetic

$ fakeroot debian / rules binary

所以它生成了deb文件。将deb安装到新机器后,我尝试运行命令:

$ rosrun beginner_tutorials talker

$ rosrun beginner_tutorials talker.py

$ rosrun beginner_tutorials listener

$ rosrun beginner_tutorials listener.py

在新机器上安装后。我无法管理说话者和听众。 / opt / ros / kinetic / lib中没有python文件。但是看看deb文件里面,/ opt / ros / kinetic / lib文件夹中有python文件。安装deb文件后我不知道python文件在哪里。我想知道如何将包含python脚本的软件包导出到可安装的deb文件中,并且在新机器上安装deb文件后,我可以在新机器上运行python可执行文件?

如果有人可以给我一些提示或指导,我会非常感激。提前谢谢!

王珏(帕特里克)

1 个答案:

答案 0 :(得分:0)

您可以将CPack与以下选项一起使用:

(全包CMakeLists.txt文件)

#############
## Install ##
#############

set(CPACK_GENERATOR "DEB")

#Creating UNIX structured package
set(CPACK_CMAKE_GENERATOR "Unix Makefiles")
set(CPACK_PACKAGE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/../..")
set(CPACK_PACKAGE_VERSION 0.2.9)

#Set directory to /../ to avoid /share part of ROS_PACKAGE_PATH
set(CPACK_PACKAGING_INSTALL_PREFIX "$ENV{ROS_PACKAGE_PATH}/../")
set(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_CURRENT_BINARY_DIR};${PROJECT_NAME};ALL;/./")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
    "${PROJECT_NAME} - ${PROJECT_DESCRIPTION}")
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
set(CPACK_PACKAGE_VENDOR "RCS")

#Now we can simply create the dependencies using almost the same package names as they declared in ROS repository
set(CPACK_DEBIAN_PACKAGE_DEPENDS "ros-kinetic-roscpp, ros-kinetic-std-msgs, ros-kinetic-message-runtime, ros-kinetic-sensor-msgs")

#IMPORTANT: set this to keep on auto-introspection for system dependencies like libc++6
set (CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)

#Keep Debian package structure untouched
set(CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION TRUE)

#Standard naming schema for Debian-based distros
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}~${CMAKE_SYSTEM_NAME}_${CMAKE_SYSTEM_PROCESSOR}")
set(CPACK_PACKAGE_VENDOR "Technical University")
set(CPACK_PACKAGE_CONTACT "<your@email.com>")

#Turn the process on    
include(CPack)

在使用简单的catkin软件包结构的情况下,您可以根据安装软件包所需的文件,取消注释和编辑install的{​​{1}}部分。然后运行

CMakeLists.txt

此后,您将在ROS软件包的根目录中拥有catkin_make package 软件包档案。现在,您可以使用.deb命令来确保包中定义的路径正确。要获取示例,请下载并检查官方二进制存储库中的所有ROS软件包。