0

我通过 RPM 交付应用程序。
我需要做的是,如果用户卸载应用程序 ( rpm -e) 以便有机会备份一些已安装应用程序的文件。
此外,在(后)安装时,我希望用户有机会将一些安装文件替换为他在之前卸载期间保存的文件。

为此,我想制作一个交互式 RPM。
但它没有用。谷歌搜索我发现某些命令例如read在 RPM 规范中以某种方式被忽略,此外,从用户那里获取交互式输入的想法是不受欢迎的,不推荐。

我的问题是,我真的在这里采取了错误的方法吗?我应该采取不同的做法吗?如何?对于这个特定问题,我想不出另一种解决方案。

有什么帮助吗?

4

1 回答 1

2

在卸载/安装 RPM 时与用户交互不是一个好的做法。它背后的理念是 RPM 应该能够自动卸载/安装,例如,当通过 YUM 安装时。如果必须,您有多种选择:

最佳:创建一个从用户那里获取所有信息的脚本,并将其写入文件。在 RPM 先决条件中,验证文件是否存在。

可选:将 RPM 嵌入到与用户交互的 bash 脚本中,提取 RPM 并运行它。我相信 Java RPM 这样做是为了让您接受 EULA。

不是一个好主意:我在某处读过 RPM 从 /dev/tty 读取的内容,因此您可以尝试exec 0</dev/tty在 %pre 或 %post 的开头添加

于 2012-04-05T12:31:45.590 回答