2017-03-15 43 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

很酷,來自熟悉它的人的聲音總是很好。 –