要在Ubuntu上完成安装,必须将postinst和prerm脚本添加到使用CMAKE构建的包中。使用SET添加脚本文件(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA ...是一个简单的部分,但是,当尝试安装时,Lintian抱怨软件包的质量,具体而言,postinst和prerm的文件权限未正确设置为755。在设置CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA之前,使用FILE(COPY并将FILE_PERMISSIONS设置为OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE(755)进行了大量的搜索答案。现在,Lintian仍在抱怨文件权限的包质量设置为775,其中包括GROUP_WRITE,但不在FILE_PERMISSIONS列表中。目前还不清楚这是如何实现的。相关的CMAKE片段发布在下面:
FILE(COPY ${installation_add_ins}/linux/postinst_in DESTINATION ${installation_add_ins}/linux/postinst
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
FILE(COPY ${installation_add_ins}/linux/prerm_in DESTINATION ${installation_add_ins}/linux/prerm
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
)
SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${installation_add_ins}/linux/postinst;${installation_add_ins}/linux/prerm;")
更有趣的是,如果" Ingnore并安装"选中后,包按预期工作。 Ubuntu的软件包管理器似乎可以修复文件权限,安装和卸载都能正常工作。但这个事实与这个问题无关。
为什么在权限中未指定GROUP_WRITE时会在结果文件上设置它?