如何从我的包中的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可执行文件?
如果有人可以给我一些提示或指导,我会非常感激。提前谢谢!
王珏(帕特里克)答案 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软件包。