包装:
CMakeLists.txt:
cmake_minimum_required(VERSION 3.7)
project(sim-runtime)
install(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/sim-runtime-info DESTINATION bin)
set(CPACK_GENERATOR "DEB")
set(CPACK_PACKAGE_NAME sim-runtime)
set(CPACK_PACKAGE_VERSION "1.5")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "geographiclib-tools")
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/postinst;${CMAKE_CURRENT_SOURCE_DIR}/postrm")
include(CPack)
安装后:
#! /bin/sh
/usr/sbin/geographiclib-get-gravity wgs84
回帖:
#! /bin/sh
rm /usr/share/GeographicLib/gravity/wgs84.egm
/usr/sbin/geographiclib-get-gravity
是依赖项提供的脚本geographiclib-tools
。当我在 postinst 中调用它时,它会下载/usr/share/GeographicLib/gravity/wgs84.egm
因为这会创建一个孤立文件,所以在卸载我的包时删除它是有意义的。这就是我rm
在 中添加命令的原因postrm
。
问题:
dpkg -i sim-runtime-1.5-Linux.deb
运行良好。 postinst
适当下载数据库并安装所有文件。然后:
stew@stewbian:~$ sudo dpkg -P sim-runtime
(Reading database ... 228685 files and directories currently installed.)
Removing sim-runtime (1.5) ...
Purging configuration files for sim-runtime (1.5) ...
rm: cannot remove '/usr/share/GeographicLib/gravity/wgs84.egm': No such file or directory
dpkg: error processing package sim-runtime (--purge):
subprocess installed post-removal script returned error exit status 1
Errors were encountered while processing:
sim-runtime
运行此命令后,软件包安装的所有文件都消失了,我们下载的数据库也postinst
消失了。一切看起来都很好,但软件包本身并未被标记为已删除。
一些调查:
- 我的第一个想法是,也许在
postrm
调用之前有其他程序自动删除了这些文件。我尝试删除postrm
。软件包可以正常卸载,但该数据库仍处于孤立状态。
问题:
如何删除由生成的文件postinst
?
答案1
好的,我找到答案了这里。
解决办法是改成postrm
这样:
#! /bin/sh
if [ $1 = 'purge' ]
then
rm /usr/share/GeographicLib/gravity/wgs84.egm
fi