Debian 预安装脚本

Debian 预安装脚本

我正在创建一个名为 smoothX* 的图标包,它处于开发阶段,并且它在 Ubuntu PPA 中得到维护,每次我更新或删除其中一些时,我都希望它们能够反映在 PPA .deb 中,为此我向 debian 文件夹中添加了一个 preinst 脚本,内容如下。

#!/bin/sh
set -e
#remove old installation files
if which smoothX* >/dev/null 2>&1 ; then
    rm -Rf /usr/share/icons/smoothX*
fi

但除了安装覆盖之外什么也没有发生(旧的更改或删除的文件仍然存在。)

如何使用 preinst 脚本彻底删除旧安装的文件并安装新 deb 文件的内容并进行配置。非常感谢您的帮助。

好吧,我设法做到了,这正是我所需要的,因为我已经上传到 PPA 并维护该包。有了这个“preinst”脚本,

#!/bin/sh
set -e
# remove old and obsolete files
rm -R -f /usr/share/icons/smoothX*
exit 0

我也知道那不是正确的方法,因为我是 Bash 脚本的新手,所以我想知道如何做正确的方法,当我用谷歌搜索时,我得到了:

if dpkg-maintscript-helper supports rm_conffile 2>/dev/null; then
    dpkg-maintscript-helper rm_conffile /etc/foo/conf.d/bar 1.2-1 -- "$@"
fi                                                                

我无法理解如何使用dpkg-maintscript。谢谢,希望有人能指导我。

答案1

如果您尝试删除预安装中的文件,您实际上应该重新设计整个安装程序以覆盖并仅删除已消失的文件。默认情况下,apt-getdpkg覆写任何具有匹配文件名的文件,然后覆盖。如果您仍在处理目标系统上的旧文件,那么该软件包就很奇怪。

最后,如果您在开发过程中总是不断地更改文件,而且还有很多剩余的部分,那么您可能不应该使用 PPA,而应该坚持从源代码构建,直到获得稳定的版本。

相关内容