情况:我正在尝试构建自定义 rpm 以将配置文件放置在特定位置。通过将配置文件放在适当的目录中,安装可以正常完成,但 %post 部分不起作用。这部分回应用户进行输入并“读取”它。该读取值将在“sed”的帮助下放置在这些配置文件中。
问题: 'read' 在 %post 部分不起作用,即。安装过程不会等待用户提供输入。它基本上通过将文件放在目录中来完成安装。简而言之,%post 部分不是交互式的,用户无法提供输入。
请在此处查看 SPEC 文件:http: //pastebin.com/5BgkJUpG。这将有助于理解这个想法。
我为构建 .deb 包的“postint”部分写了与上面 %post 部分完全相同的行,它在那里工作得很好。安装 deb 包的用户能够进行输入,并且这个给定的值被放置在带有“sed”的配置文件中。
我不认为 RPM 旨在能够以交互方式运行。您做出了一些危险的假设,因为 RPM 不是由配置管理以自动方式或 GUI 前端安装的。对于期望来自 shell 的输入的 RPM,这两种情况都不是好兆头。
也许我可以建议一个替代方案?这是提示输入目标主机的主机名吗?IE 可以
sed
包含$(hostname)
而不是从标准输入获取输入吗?我发现这个引用是指有人尝试做同样的事情。他们的建议是如何在 %pre 中获取输入?
来自“Unix and Linux”的用户贡献了这个答案:
来自Fedora 的 RPM 指南:
警告 不要尝试编写交互式脚本。许多用户会自动安装 RPM。在这种情况下,或者如果用户运行图形 RPM 工具,您的脚本输出的任何信息都将丢失。用户输入将不可用。
我认为您正在寻找可重定位的 rpm。