gpt4 book ai didi

ios - Debian 软件包 : rm file on uninstall but not upgrade

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:10:22 24 4
gpt4 key购买 nike

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

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

最佳答案

您是对的,更新应用确实会运行“删除”脚本(以及下一个版本的安装脚本)。

但是,包系统也会pass command line parameters to the scripts ,您可以使用它们来确定您处于哪种情况:升级,或卸载

如果您只想对传递给脚本的参数进行逆向工程,请将其放在脚本中(例如 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 安装软件包时,它会在运行时向您显示安装程序脚本的标准输出。

关于ios - Debian 软件包 : rm file on uninstall but not upgrade,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16240282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com