2017-03-15 5 views
0

Ich bin neu auf Linux-Verpackung, so dass ich etwas offensichtliche fehlen könnte. Ich packe mein Programm zu deb und rpm Paketen und ich benutze fpm, um mir zu helfen. Ich brauche Leute, die ihren API-Schlüssel am Ende der Installation eingeben, damit die Konfigurationsdatei automatisch aktualisiert werden kann. Ich habe eine blah.postinst-Datei, die diesen Teil enthält:Erstellen RPM-Paket mit fpm mit --after-Installation gibt Fehler

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

und ich bin mit --after-install Flagge fpm dieses Skript.

Dies funktioniert für deb Paket, aber nachdem ich fpm rpm Paket zu erstellen, verwenden und versuchen, es zu installieren, wird die Linie read -p 'Please enter your API key(skip this step by just press ENTER): ' apikey_var (glaube ich) ergibt Fehler:

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 

Ich könnte mir vorstellen, dass der Code in blah.postinst Skript würde nur in den %post Abschnitt der Datei spec passen, wenn ich manuell ein RPM-Paket erstelle, aber ich kann nicht herausfinden, was schief gehen könnte. Kann mir jemand helfen? Oder zumindest, wie debugge ich das? Vielen Dank.

Antwort

1

Dies wurde zuvor besprochen; rpm s sind so konzipiert, automatisiert zu sein. Tun Sie nicht erwarten Sie ein Terminal für die Interaktion da sein. Es könnte in einer anderen Sitzung (wie anaconda oder puppet würde) sein. Es könnte sich um einen Hintergrund handeln. Es kann ein Cron-Job sein. Lassen Sie die Informationen beim ersten Lauf sammeln oder lassen Sie sie ein Skript ausführen, das in Ihrem Leitfaden "Erste Schritte" aufgeführt ist.

+0

Cool, es ist immer gut, eine Stimme von Leuten zu haben, die es gut kennen. –

Verwandte Themen