2017-03-15 5 views
0

저는 리눅스 패키지를 처음 사용하기 때문에 확실하지 않은 것이 있습니다. 내 프로그램을 debrpm 패키지에 포장하고 있으며 fpm을 사용하고 있습니다. 사람들이 설치가 끝날 때 API 키를 입력해야 구성 파일이 자동으로 업데이트 될 수 있습니다.--after-install을 사용하여 fpm을 사용하여 rpm 패키지를 생성하면 오류가 발생합니다.

#!/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 플래그를 사용하고 있습니다 :이 부분을 포함하는 blah.postinst 파일이 있습니다.

deb 패키지 작동하지만, 내가 rpm 패키지를 생성하고 설치하려고 FPM을 사용 후, 라인 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은 으로 자동 설계되었습니다. 은 아니요은 터미널이 상호 작용할 것으로 예상합니다. 다른 세션 (예 : anaconda 또는 puppet) 일 수 있습니다. 배경이 될 수도 있습니다. 그것은 cron 일일지도 모른다. 첫 번째 실행에서 정보를 수집하거나 "시작하기"가이드에 설명 된 스크립트를 실행하게하십시오.

+0

멋지다. 잘 아는 사람들의 목소리를 듣는 것이 좋습니다. –