2017-03-15 62 views
0

我是linux包装新手,所以我可能会丢失一些明显的东西。我正在打包我的程序到debrpm包,我使用fpm来帮助我。我需要人们在安装结束时输入他们的API密钥,以便配置文件可以自动更新。我有一个blah.postinst文件,其中包含此部分:使用fpm创建rpm包--after-install会给出错误

#!/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 

我会想象在blah.postinst代码如果我手动创建一个rpm包,那么脚本就会适合spec文件的%post部分,但我无法弄清楚会出现什么问题。有人可以帮助吗?或者至少我该如何调试呢?谢谢。

回答

1

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

+0

很酷,来自熟悉它的人的声音总是很好。 –