使用fpm创建rpm包时使用--after-install会出错

时间:2017-03-15 21:40:48

标签: rpm fpm

我是linux打包的新手,所以我可能会遗漏一些明显的东西。我将我的程序打包到debrpm个软件包,我使用fpm来帮助我。我需要人们在安装结束时输入他们的API密钥,以便配置文件可以自动更新。我有一个包含此部分的blah.postinst文件:

#!/bin/bash
set -e

read -p 'Please enter your API key(skip this step by just press ENTER): ' apikey_var
if [[ ! -z $apikey_var ]]
then
    echo "The API key is set. You could always change it by editing /etc/agent/process-collector.ini file"
    sed "s/sample_apikey/$apikey_var/" /etc/agent/process-collector.ini.example > /etc/agent/process-collector.ini
else
    echo "You didn't enter any API key, you could always add it by editing /etc/agent/process-collector.ini file"
    mv /etc/agent/process-collector.ini.example /etc/agent/process-collector.ini
fi

我正在使用fpm' --after-install标志来包含此脚本。

这适用于deb包,但在我使用fpm创建rpm包并尝试安装它之后,行read -p 'Please enter your API key(skip this step by just press ENTER): ' apikey_var(我认为)会产生错误:

warning: %post(process-agent-0.99.0-1.x86_64) scriptlet failed, exit status 1
Non-fatal POSTIN scriptlet failure in rpm package dd-process-agent-0.99.0-1.x86_64

如果我手动创建rpm包,我会想象blah.postinst脚本中的代码只适合%post文件的spec部分,但我可以'找出可能出错的地方。有人可以帮忙吗?或者至少如何调试?感谢。

1 个答案:

答案 0 :(得分:1)

之前已经讨论过; rpm设计为自动期望终端在那里进行交互。它可以在另一个会话中(如anacondapuppet)。它可能是背景的。这可能是一个cron工作。让它在第一次运行时收集信息,或让它们运行“入门”指南中记录的脚本。