Debian包:卸载时rm文件但不升级

时间:2013-04-26 15:39:47

标签: ios package debian jailbreak cydia

我正在为越狱的iOS编写调整,这些调整打包在.deb个文件中。调整将其数据保存在/var/mobile/Library/Application Support/TweakName/file.save。当用户卸载调整时,我想rm保存文件,这样我就不会留下文件了。但我的理解是postrm脚本在更新包时以及删除时运行,并且我希望保留版本之间保存的状态,因为我不希望任何更新更改保存格式(如果确实出现,我可以处理它。)

那么,有没有办法区分卸载和更新,并且仅在卸载的情况下运行命令?

1 个答案:

答案 0 :(得分:3)

更新应用程序确实运行“删除”脚本(以及下一版本的安装脚本)。

但是,软件包系统也会pass command line parameters to the scripts,您可以使用它们来确定您所处的方案:升级卸载。< / p>

如果您只想反向设计传递给脚本的参数,请将其放在脚本中(例如postrm):

echo "postrm called with args= " $1 $2

当我安装更新并删除软件包时,我会看到:

iPhone5:~ root# dpkg -i /Applications/HelloJB.deb
(Reading database ... 3530 files and directories currently installed.)
Preparing to replace com.mycompany.hellojb 1.0-73 (using /Applications/HelloJB.deb) ...
prerm called with args= upgrade 1.0-73
Unpacking replacement com.mycompany.hellojb ...
Setting up com.mycompany.hellojb (1.0-74) ...
postinst called with args= configure 1.0-73

iPhone5:~ root# dpkg -r com.mycompany.hellojb
(Reading database ... 3530 files and directories currently installed.)
Removing com.mycompany.hellojb ...
prerm called with args= remove
postrm called with args= remove

因此,如果您只想在卸载期间rm文件,请将其放在postrm脚本中:

#!/bin/bash

echo "postrm" $1
if [ $1 = "remove" ]; then
  echo "deleting user data on uninstall"
  /bin/rm /var/mobile/Library/Application Support/TweakName/file.save
fi

exit 0

注意您没有说明这些是由Cydia安装,还是由dpkg直接在命令行安装。我现在无法用Cydia测试,但一般概念应该是相同的。您可能已经注意到,在通过Cydia安装软件包时,它会在安装程序脚本运行时向您显示标准输出。