Dee*_*ole 1 debian dpkg apt package-management debconf
我有一个 Debian 软件包,上面说它XYZ.deb在安装时复制了一些文件。
根据 Debian 软件包卸载政策,只有那些在安装过程中复制的文件才会被删除。Debian 也不删除conf文件。
XYZ 包安装了一些 Python 脚本,这些脚本在执行时会创建.pyc文件。现在在卸载时我想删除所有文件。干净地删除包的 postrm 脚本是什么?
关于你的第一个问题:
XYZ 包安装了一些 python 脚本,这些脚本在执行时会创建 .pyc 文件。现在卸载时我想删除所有文件。干净地删除包的 postrm 脚本是什么?
一般来说,一个合适的 postrm 脚本(我相信)是由 debhelper 和朋友自动生成的。参见手册页dh_python。特别是,这个手册页说
如果某些模块需要在安装时进行字节编译,则会生成适当的 postinst 和 prerm 脚本。如果已找到字节编译模块,则将其删除。
关于你的第二个问题,
此外,XYZ 是使用 debconf 文件配置的,该文件在安装包时提示用户接受 EULA。如果用户对 EULA 说不,我该如何退出?
我不知道答案,但请查看 Debian 中包含的某些专有软件的 debconf 模板。Sun Java 就是一个例子,它有(有?)一个被 debconf 收购的 EULA。
附录:
由于 OP 似乎不相信,这里是一个名为python-corrmodel. 我编写了软件和 Debian 包装。但是,我没有写postinst和prerm脚本,实际上直到这一刻才看它们。请注意,prerm 脚本调用该pyclean实用程序,它是 Python 的一部分。帮助说:
pyclean - 删除 .pyc 和 .pyo 文件
还要注意,脚本说代码是由dh_python2.
最后一点:我建议使用dh,与旧式 debhelper 相比,它相对较新,但正在迅速普及。基本上,dh默认情况下以特定顺序调用默认模式下的所有 debhelper 规则。如果要自定义特定 debhelper 命令的行为,可以覆盖它。这是 debhelper 的作者 Joey Hess 对 dh 覆盖的描述。最大的优点是您的规则文件少得多,而且您可以确保所有命令都以正确的顺序调用。
这是 prerm 脚本。
#!/bin/sh
set -e
# Automatically added by dh_python2:
if which pyclean >/dev/null 2>&1; then
pyclean -p python-corrmodel
else
dpkg -L python-corrmodel | grep \.py$ | while read file
do
rm -f "${file}"[co] >/dev/null
done
fi
# End automatically added section
Run Code Online (Sandbox Code Playgroud)
附录 2:
既然我做了广告dh,我将在下面添加我的规则文件。这不是完整的规则文件,但这一行包含主要逻辑。这基本上是debhelper将构建交给setup.py脚本,然后由脚本完成繁重的工作。
%:
dh $@ --with python2 --buildsystem=python_distutils --install-layout=deb
Run Code Online (Sandbox Code Playgroud)