问题背景
生产环境通过在镜像ISO中添加DEB安装包达到批量跑脚本的目的。脚本放在DEB包的postinst中执行。
项目结构
最简单的项目目录结构,只需要一个CMakeLists脚本和对应debian目录下的脚本。
$ tree
.
├── build
│ ├── auto_partition-1.0.0-Linux.deb
├── CMakeLists.txt
└── debian
└── postinst
CMakeLists脚本
CMAKE_MINIMUM_REQUIRED(VERSION 3.0.0)
SET(CPACK_GENERATOR "DEB")
SET(CPACK_PACKAGE_VERSION "1.0.0")
SET(CPACK_PACKAGE_NAME "auto_partition")
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "your_email")
SET(CPACK_SET_DESTDIR TRUE)
SET(CPACK_INSTALL_PREFIX "/opt/your_app/")
SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/debian/postinst")
INCLUDE(CPack)
生成DEB包
执行如下命令,生成空的DEB包,只包含postinst脚本。
mkdir build && cd build
cmake ..
cpack
参考文档
https://cmake.org/cmake/help/latest/cpack_gen/deb.html
https://blog.youkuaiyun.com/qq_16149777/article/details/89848242