包装:

包装:

包装:

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

相关内容